MySQL升级5.5到5.6创建了问题

时间:2013-11-09 09:46:22

标签: mysql linux

我想之前,我是通过说列不为空来错误地设置我的数据库,并且没有默认值。 (我认为,从未注意过)。

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

的内容时

将值1 2 3(但不是4)输入第1列2 3

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

我从5.5迁移到5.6

on cent os 6,php 5.4

只是混淆了数据库以前工作的原因,而不再是,我所做的只是导出数据库并再次导入。

2 个答案:

答案 0 :(得分: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将在从服务器上失败并且复制将停止。

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


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

答案 1 :(得分: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