MySQL 的 1067 错误,蛮常见的,尤其你动了data
目录之后。通常启动时报错,大多跟timestamp
的默认值或者ibdata1
文件有关。想搞定它,先别慌,定位问题才是关键。
日志文件里的提示,基本都绕不开Invalid default value for 'timestamp'
。你看看my.cnf
里有没有NO_ZERO_IN_DATE
或者NO_ZERO_DATE
,有的话删掉试试,挺有用的。
如果你是替换过整个data
目录,那就麻烦点了。InnoDB的表结构信息都在ibdata1
,它和.frm
、ib_logfile*
这仨必须对上号,不然就起不来。最好有备份,没备份就得赌一把mysqlcheck
,也能救回来一部分。
除了修配置、看日志,有时候你还得调大innodb_data_file_path
,或者改用独立表空间模式,让每张表都有自己的数据文件,这样ibdata1
不会越长越胖。
我之前也遇到一次,是调了sql_mode
、删了临时表、重启服务搞定的。所以啊,动 MySQL 前,备份真的是救命绳。如果你也卡在 1067,不妨参考这个文档,里面把原因和对策都讲得挺全。