1

我猜以前,我错误地设置了我的数据库,说该列不为空,并且没有默认值。(我认为,从未注意)。

现在更新到 mysql 5.6 后,我的很多列都说它不是 null 并且它没有默认值,当我尝试插入类似

值 1 2 3(但没有 4)到第 1 2 3 列

它失败并给我一个错误,因为第 4 列没有设置为 null 也没有默认值。mysql中有设置绕过这个吗?

我从 5.5 迁移到 5.6

在 cent os 6 , php 5.4

只是混淆了为什么数据库以前可以工作,而不是现在,我所做的只是导出数据库并再次导入。

4

2 回答 2

1

找到了答案: http ://dev.mysql.com/doc/refman/5.6/en/upgrading-from-previous-series.html

从 MySQL 5.6.13 开始,服务器应用适当的 sql_mode 检查以在插入或更新时生成警告或错误。

如果您使用基于语句的日志记录(binlog_format=STATEMENT),那么复制的不兼容问题是,如果升级了从属服务器,未升级的主服务器将执行前面的示例而不会出错,而从服务器上的 INSERT 将失败并且复制将停止。

为了解决这个问题,停止主服务器上的所有新语句并等待从服务器赶上。然后升级slave,然后升级master。或者,如果您无法停止新语句,请暂时更改为在主服务器上基于行的日志记录(binlog_format=ROW),并等待所有从服务器处理完所有生成的二进制日志,直到此更改为止。然后升级从属服务器,然后升级主服务器,并将主服务器更改回基于语句的日志记录。


经过进一步调查,关闭mysql严格模式在my.cnf文件中起作用。

于 2013-11-09T10:07:24.440 回答
0

CTRL + ALT + T(终端)

sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean
sudo /etc/init.d/apache2 reload
sudo apt-get install phpMySql
于 2014-11-10T05:41:30.673 回答