【问题标题】:mysql - String not assuming empty default after upgrademysql - 升级后字符串不假定为空默认值
【发布时间】:2016-12-21 11:38:37
【问题描述】:

我最近更新了我的 MySQL(并 wamp 到 v3)并将我的旧数据库移到那里。

以前,如果没有给出值,varchar、char、text 等字段类型将假定默认值为空字符串(即使我在创建表结构时没有明确设置此默认值)。

但更新后,当我尝试运行我以前工作的代码时,它给了我异常

字段<field_name> 没有默认值

我猜这是 mysql 中的设置或其他东西。谁能帮帮我?

谢谢。

【问题讨论】:

  • 我认为您应用了not null 选项对吗?
  • 是的。但不是空字符串字段以前默认为空字符串。
  • 是的,这只是一个配置
  • MYSQL 5.7 在这方面做了一些重大的改变。您最好花点时间查看Changes Affecting Upgrades to MySQL 5.7

标签: mysql phpmyadmin wamp mysql-5.7 wamp3


【解决方案1】:

原来严格模式已启用。

通过换行禁用严格模式

sql-mode="STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER"

sql-mode=""

参考:https://support.kayako.com/article/472-how-do-i-disable-mysql-strict-mode-on-the-server

【讨论】:

  • 要使用 SQL 进行配置,请使用 mysql -u root -p -e "SELECT @@GLOBAL.sql_mode;" 获取设置并使用 mysql -u root -p -e "SET GLOBAL sql_mode = 'yourmodifiedsettingshere';" 进行设置。
猜你喜欢
  • 2013-03-12
  • 2015-06-03
  • 2012-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-15
  • 1970-01-01
  • 2012-12-29
相关资源
最近更新 更多