如何在 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 月,可能根本不需要它,我们已经解决了这个问题,但将来可能会再次发生