如何在 MySQL 5.7 中使用 AzerothCore
How to use AzerothCore with MySQL 5.7
在我将 MySQL 版本从 5.6 升级到 5.7 后,AzerothCore 安装程序失败并出现如下错误:
ERROR 1067 (42000) at line 234: Invalid default value for 'last_login'
ERROR 1292 (22007) at line 266: Incorrect datetime value: '0000-00-00 00:00:00' for column 'last_login' at row 1
和:
Can't find any matching row in the user table
编辑:这个答案有点过时,MySQL 5.7 的一些问题已在最新版本
中得到解决
如 requirements page of the AC wiki 中所述:
AzerothCore does not officially support MySQL version >= 5.7, but there is a way to get it up and running.
You have to remove ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE
and NO_ZERO_DATE
flags from MySQL's sql_mode variable in the MySQL config file so that all queries updates and core statements can be applied correctly.
我发现将我的 SQL 模式设置为空字符串很有用(在我的情况下解决了 MySQL 5.7 的所有问题):
SET GLOBAL sql_mode = ''
您可以 运行 通过终端使用 sql 语句:
mysql -e "SET GLOBAL sql_mode = '';"
或者您可以在 运行 任何 SQL 语句之前手动设置 SQL 模式:
SET sql_mode = '';
事实上,你最好这样做(以避免删除默认模式):
-- Select the sql modes
SELECT @@sql_mode;
-- Remove the 2 modes NO_ZERO_IN_DATE and NO_ZERO_DATE and run this query
SET sql_mode = 'mode_1,mode_2,mode_3,mode_4,mode_5';
也可以直接放在mysql配置中。
[mysqld]
之后:
[mysqld]
sql_mode = mode_1,mode_2,mode_3,mode_4,mode_5
注:ONLY_FULL_GROUP_BY
可以保留
编辑:截至 2019 年 3 月,可能根本不需要它,我们已经解决了这个问题,但将来可能会再次发生
在我将 MySQL 版本从 5.6 升级到 5.7 后,AzerothCore 安装程序失败并出现如下错误:
ERROR 1067 (42000) at line 234: Invalid default value for 'last_login'
ERROR 1292 (22007) at line 266: Incorrect datetime value: '0000-00-00 00:00:00' for column 'last_login' at row 1
和:
Can't find any matching row in the user table
编辑:这个答案有点过时,MySQL 5.7 的一些问题已在最新版本
中得到解决如 requirements page of the AC wiki 中所述:
AzerothCore does not officially support MySQL version >= 5.7, but there is a way to get it up and running.
You have to remove
ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE
andNO_ZERO_DATE
flags from MySQL's sql_mode variable in the MySQL config file so that all queries updates and core statements can be applied correctly.
我发现将我的 SQL 模式设置为空字符串很有用(在我的情况下解决了 MySQL 5.7 的所有问题):
SET GLOBAL sql_mode = ''
您可以 运行 通过终端使用 sql 语句:
mysql -e "SET GLOBAL sql_mode = '';"
或者您可以在 运行 任何 SQL 语句之前手动设置 SQL 模式:
SET sql_mode = '';
事实上,你最好这样做(以避免删除默认模式):
-- Select the sql modes
SELECT @@sql_mode;
-- Remove the 2 modes NO_ZERO_IN_DATE and NO_ZERO_DATE and run this query
SET sql_mode = 'mode_1,mode_2,mode_3,mode_4,mode_5';
也可以直接放在mysql配置中。
[mysqld]
之后:
[mysqld]
sql_mode = mode_1,mode_2,mode_3,mode_4,mode_5
注:ONLY_FULL_GROUP_BY
可以保留
编辑:截至 2019 年 3 月,可能根本不需要它,我们已经解决了这个问题,但将来可能会再次发生