如果这是一个基本问题,我很抱歉,但我一直在通过这个网站和其他网站寻找答案。我有一个 MySQL (5.6.13) 数据库,周末修补了它。但是,没有关于启动过程的文档。我最终能够重新启动它,但现在我遇到了几个问题,我相信这些问题在启动选项中得到了解决,但没有找到任何东西。这个系统已经运行了 4 年多,只出现过一些小问题。今天,当我通过脚本重新填充数据时,我遇到了两个问题。
问题 1:Mysql 错误:1406 (22001):第 1 行的列“ftsub”的数据太长 此错误由以下值引起:log_history_tam_dest。该列是 varchar 大小为 16。在重新启动之前,MySQL 会将此值截断为 log_history_tam_ 是否有一个选项可以修剪字符串以适合列。我找了找,没找到。
问题 2:Mysql 错误:1264 (22003):第 1 行的列“fid”的值超出范围。这定义为 INT 大小 64。该值为 2216112200,大于有符号整数。但是,这适用于更大的值。当前最大值为:3716111600。my.cnf 是否有一个启动选项可以解决这两个问题?
我明白最好的办法是修复代码,但这是一个正在被替换的遗留系统。客户需要这个系统运行到年底。
谢谢你,艾伦
答案1
STRICT_TRANS_TABLES
是这里的问题。从 5.6 开始,它在配置文件中默认启用。启用后:
STRICT_ALL_TABLES
对于事务表,当启用或时,如果数据更改语句中的值无效或缺失,则会发生错误STRICT_TRANS_TABLES
。该语句将中止并回滚。https://dev.mysql.com/doc/refman/5.6/en/sql-mode.html#sql-mode-strict
sql-mode
在配置文件中找到并删除STRICT_TRANS_TABLES
并重新启动服务器。