原因是从MySQL 5.6版本开始,timestamp的默认值已被标为deprecated,即如果类型为timestamp的字段,如果没有明确声明默认值为NULL,则默认为NOT NULL。如果设置timestamp字段为NULL,则自动存储当前的timestamp。
2) Can't find error-message file '/usr/local/mysql/share/errmsg.sys'
执行MySQL的“bin/mysqld --initialize --user=mysql --explicit_defaults_for_timestamp”时报的错误。
这可能是因为之前有执行过,导致data目录不为空,通过“bin/mysqld --verbose --help|grep datadir”可以查看到默认的数据目录为/var/lib/mysql/。需要保证/var/lib/mysql/目录为空。或者通过指定参数--datadir改变数据目录,如“bin/mysqld --initialize --user=mysql --explicit_defaults_for_timestamp --datadir=/data/mysql/data”。
3) Can't find error-message file '/usr/local/mysql/share/errmsg.sys'
对于错误:
Can't find error-message file '/usr/local/mysql/share/errmsg.sys'. Check error-message file location and 'lc-messages-dir' configuration directive.
从官网下载的MySQL默认安装目录为/usr/local/mysql,如果实际为其它目录,则建议通过参数--basedir指定,否则会遇到不少安装问题。通过执行“bin/mysqld --verbose --help|grep basedir”即可看到“--basedir”的默认值为/usr/local/mysql/。
4) Can't connect to local MySQL server through socket
使用mysql试图进入MySQL Cli时,遇到错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
可能是因为客户端的版本和服务端的版本不一致,如果是这样,通常不存在/var/lib/mysql/mysql.sock。可以修改环境变量PATH来解决,让新安装的MySQL的bin目录位于PATH前头,如:
export MYSQL_HOME=/usr/local/mysql
export PATH=$MYSQL_HOME/bin:$PATH
export MANPATH=$MYSQL_HOME/man:$MANPATH
5) ERROR 3021 (HY000): This operation cannot be performed with a running slave io thread;run STOP SLAVE IO_THREAD FOR CHANNEL '' first.
在设置同步关系时,没有先停止slaves线程。解决办法为在设置同步关系之前,先执行下“stop slave”,以停止slave线程。