Как использовать AzerothCore с MySQL 5.7

После того как я обновил версию MySQL с 5.6 до 5.7, установщик AzerothCore завершается с ошибкой, например:

ОШИБКА 1067 (42000) в строке 234: Недопустимое значение по умолчанию для «last_login»

ОШИБКА 1292 (22007) в строке 266: неверное значение даты и времени: «0000-00-00 00:00:00» для столбца «last_login» в строке 1

а также:

Не удается найти соответствующую строку в пользовательской таблице


person Francesco Borzi    schedule 21.12.2018    source источник


Ответы (2)


На самом деле, вам лучше сделать это так (чтобы не удалять режимы по умолчанию):

-- 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 года это, вероятно, вообще не нужно, мы исправили это, но это может произойти снова в будущем.

person Barbz_YHOOL    schedule 28.01.2019

EDIT: этот ответ немного устарел, некоторые проблемы с MySQL 5.7 были решены в последней версии.


Как указано на странице требований вики AC:

AzerothCore официально не поддерживает версию MySQL ›= 5.7, но есть способ запустить ее.

Вы должны удалить флаги ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE и NO_ZERO_DATE из переменной MySQL sql_mode в файле конфигурации MySQL, чтобы все обновления запросов и основные операторы могли применяться правильно.

Я нашел полезным установить для режима SQL пустую строку (что в моем случае решило все проблемы с MySQL 5.7):

SET GLOBAL sql_mode = ''

вы можете запустить этот оператор sql через терминал, используя:

mysql -e "SET GLOBAL sql_mode = '';"

или, в качестве альтернативы, вы можете вручную установить режим SQL перед выполнением любых операторов SQL:

SET sql_mode = '';

person Francesco Borzi    schedule 21.12.2018