项目使用django+mysql

在linux中使用的是mysql5.7,导入数据提示:Field * doesn't have a default value

想要解决问题就需要知道在mysql5.7中,启用了严格模式:

在配置文件中 /etc/mysql/my.cnf 中找到:

sql-model=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

修改为:sql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

然后重启mysql,在重新同步模型到数据库

出现此问题的原因:

在mysql5.0.2以前,mysql对非法值检查并不严厉,而且为了数据输入还会强制将他们变为合法值。

在5.0.2以后的版本中,保留了以前的默认行为,但你可以为不良值选择更传统的处理方法,从而使得服务器能够拒绝并放弃出现不良值的语句。

mysql 默认行为和新的严格sql模式和区别:

如果未使用严格模式,下面的情况是合法的。如果将不正确的值插入到列,如将null值插入非null列,或将过大的数据插入数值列,mysql 会将这些列设置为最可能的值,而不是抛出错误信息。

如果视图将超过范围的值保存到数值列,mysql服务器将保存0(最小的可能值)取而代之,或最大的可能值。

对于字符串,mysql 或保存空字符串,或将字符串可能多的部分保存到列中。

如果打算将不是以数值开头的字符串保存到数值列,mysql将保存0。

mysql允许将特定的不正确日期值保存到DATE和DATETIME列(如:“2000-02-31” 或 “2000-02-00”)。其观点在于,验证日期不是sql服务器你的值。如果mysql能保存日期值并且准确检索相同的值,mysql就能按给定的值保存它。如果日期错误(超出服务器能保存的范围)将在列中保存特殊的日期值“0000-00-00”取而代之。

如果视图将null值保存到不接受null值的列,对于单行insert语句,将出现错误。对于多行insert语句或者insert into...select语句,mysql服务器会保存针对列数据类型的隐含默认值。一般情况下,对于数值类型,它是0,对于字符串类型,它是空字符串(‘’),对于日期和时间类型是“zero”。

如果insert语句未为列指定值,如果列定义包含明确的default子句,mysql将插入默认值。如果在定义中没有这类default子句,mysql 会插入列数据类型的隐含默认值。

采用前描述规则的原因在于,在语句开始执行前,无法检查这些情况。如果在更新了舒航后遇到这类问题,我们不能仅靠回滚解决,这是因为存储引擎可能不支持回滚。种植语句并不是良好的选择,在该情况下,更新完成了“一半”,这或许是最差的情况。对于本例,较好的方式是“尽可能做到最好”,就像什么都没有发生那样继续执行。

在mysql 5.0.2以后的版本中,可以使用STRICT_TRANS_TABLES 或 STRICT_ALL_TABLES sql模式,选择更严格的处理方式。

STRICT_TRANS_TABLES的工作方式:

对于事物性存储引擎,在语句中任何地方出现的不良数据值俊辉导致放弃语句并执行回滚。

对于非事物性存储引擎,如果错误出现再要插入或更新的第一行,将放弃语句。(这种情况下,可以认为语句未改变表,就像事物表一样)。首行后出现的错误不会导致放弃执行语句。取而代之的是,将调整不良数据值,并给出警告,而不是错误。换句话讲,使用STRICT_TRANS_TABLES后,错误值会导致mysql执行回滚操作,如果可以,所有更新到此为止。

要想执行更严格的检查,请启用STRICT_ALL_TABLES。除了非事务性存储引擎,它与STRICT_TRANS_TABLES等同,即使当不良数据出现在首行后的其他行,所产生的错误也会导致放弃执行语句。这意味着,如果错误出现在非事务性表多行插入或更新过程之中,仅更新部分结果,前面的行将完成插入或更新,但错误出现点后面行为则不然。对于非事务性表,为了避免这种情况的发生,可使用单行语句,或者在能接受转换警告而不是错误的情况下使用STRICT_TRANS_TABLES。要想在第1场合防止问题的出现,不要使用mysql来检查列的内容。最安全的方式是,让应用程序负责,仅将有效值传递给数据库。

有了严格的模式选项后,可使用insert ignore 或 update ignore 而不是不带ignore的insert或update,将错误当做警告对待。

http://www.2cto.com/database/201212/174364.html

mysql doesnt have a default value_导入mysql数据的时候提示Field * doesn't have a default value解决方法...相关推荐

  1. mysql 查数据 default无效_导入mysql数据的时候提示Field * doesn't have a default value解决方法...

    项目使用django+mysql 在linux中使用的是mysql5.7,导入数据提示:Field * doesn't have a default value 想要解决问题就需要知道在mysql5. ...

  2. mysql 直接从date 文件夹备份表,还原数据库之后提示 table doesn`t exist的原因和解决方法

    mysql 直接从date 文件夹备份表,还原数据库之后提示 table doesn`t exist的原因和解决方法 参考文章: (1)mysql 直接从date 文件夹备份表,还原数据库之后提示 t ...

  3. eclipse的plugins导入hadoop-eclipse-plugin-2.6.0.jar后Preference下没有hadoop Map/Reduce的解决方法

    参考文章:eclipse下的plugins导入hadoop-eclipse-plugin-2.7.1.jar,Preference下没有hadoop Map/Reduce的解决方法 这种现象一般是由于 ...

  4. mysql 安装、建库、导入导出数据

    一.安装mysql数据库(如果已经有数据库,跳过这一步) 1. 下载和安装Yum repository 下载地址:https://dev.mysql.com/downloads/repo/yum/ 使 ...

  5. csv导入mysql linux_如何将CSV文件导入MySQL表

    如何将CSV文件导入MySQL表 我有一个未规范化的事件-来自客户端的日记CSV,我试图将它加载到MySQL表中,以便将其重构为正常的格式.我创建了一个名为"CSVImport"的 ...

  6. php读取excel存入mysql数据库_PHP将Excel内容导入mysql数据库

    PHP将Excel内容导入mysql数据库 注:本文技术含量较低,是通过别人写的一个类来完成的,所以不要用金砖砸我.小生我怕怕!!! 1.首先需要一个读取excel的类(在附件中) 2.附件中有3个文 ...

  7. mysql 必知必会导入官方数据库,出现错误,ASCII ‘\0‘ appeared in the statement解决方法

    最近在学MySQL必知必会,导入自带的数据库,出现如下错误: ERROR: ASCII '\0' appeared in the statement, but this is not allowed ...

  8. MySQL驱动下载,JaveIDEA2022 如何导入mysql数据库驱动

    使用IDEA2022,创建JAVA项目后,通过以下方法导入mysql的驱动 一.在mysql数据库官网上下载驱动 1.进入 MySQL 官网,网址:MySQL :: MySQL Community D ...

  9. word导入mysql表格,如何将excel表格导入mysql数据库【excel表格导入word太大】

    如何在excel表格中读取sql数据库数据 excel程序自带的外部功能,可以连接sql服.具体步骤为: 1.选择[数据]选项卡,在[获取外部数据]分组,找到[自其他来源]. 2.单击[自其他来源]按 ...

最新文章

  1. MIT+IBM同时利用AI探索神经科学,让脑科学研究如虎添翼
  2. 如何给电冰箱加氟(方法)
  3. STM32(一)----建立嵌入式STM32工程
  4. 统一配置中心选型对比
  5. php 标签库,PHP.MVC的模板标签系统之模板标签库
  6. NLP系列之文本分类
  7. grid 安装失败 卸载grid 实操
  8. java网页内容不能复制_win7系统禁用Java小程序脚本网页内容复制不了的解决方法...
  9. 如何理解电容、电感产生的相位差
  10. mw150um 驱动程序win10_水星MW150UM无线网卡驱动下载-水星MW150UM 1.0无线网卡驱动官方版下载[电脑版]-华军软件园...
  11. const char* std::string CString 之间的转换
  12. 【PC页面设计项目】宠物物流页面设计(源码+图示)
  13. bellman ford java_Bellman-Ford算法
  14. openwrt软路由实现ipv6 nat 上网配置
  15. 苹果手机来电防火墙_苹果手机上的月亮图标是什么意思?原来这么实用,涨知识了...
  16. Bean是如何创建的?
  17. 学习Oracle数据库入门到精通教程资料合集
  18. BLAM源码解析(四)—— 基于ICP的位姿更新
  19. 分布式事物 TCC模式见解
  20. 图灵奖大佬 Yan Lecun推荐的一本 PyTorch 权威教程书

热门文章

  1. PaddlePaddle飞桨入门之旅(二)
  2. Java ASCII编码
  3. 【第8天】SQL进阶-更新记录(SQL 小虚竹)
  4. 由硫化铅/硒化物和碲化物(PbX:PbS,PbSe和PbTe)制成的QD钙钛矿量子点
  5. 马来酰亚胺修饰黑磷量子点浓度0.1mg/ml|油相PbS包裹PbSe量子点PbSe核是6nm左右Pbs壳层1-2nm
  6. Gartner 网络研讨会 “九问数字化转型” 会后感
  7. 【 卷积神经网络CNN 数学原理分析与源码详解 深度学习 Pytorch笔记 B站刘二大人(9/10)】
  8. 科创板市价申报订单中拟用价格保护措施,买入申报的成交价不高于保护限价... 1
  9. 干饭人的苦恼:科学家发现人的饥饿感和孤独感非常相似
  10. 转: angularjs学习总结(~~很详细的教程)