MYSQL常见问题


mysql常见问题记录。

1. 最近迁移数据库和服务器,升级了使用的MYSQL的版本,由5.6升级到了5.7,之后同步了数据。本来感觉应该没啥问题,但是访问项目,突然发现居然有很多报错??

报错的内容如下所示:

1055 Expression #8 of SELECT list is not in GROUP BY clause and contains nonaggregated column

一番查找以后,发现原来是因为mysql 5.7默认使用的sql_mode与5.6有所变化。mysql 5.7默认要求group by中的列一定要出现在select中。 建议修改sql_mode,写入数据库配置my.cnf中。

vim /etc/my.cnf
# [mysqld]段中添加以下内容,重启mysql
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
:wq

2. 1292 - Incorrect datetime value: '' for column

一般出现这个情况主要是MYSQL从5.6升级到5.7,还是sql_mode的问题,如果是迁移的老项目,还是建议修改sql_mode。

vim /etc/my.cnf
# [mysqld]段中添加以下内容,重启mysql
sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
:wq

3. 用户授权/远程登录

GRANT ALL PRIVILEGES ON *.* TO admin@"%" IDENTIFIED BY 'admin' WITH GRANT OPTION;
flush privileges;