Advertisement:

Author Topic: Ошибка при апгрейде SMF-1.1.21 до SMF-2.0.11  (Read 5690 times)

Offline G_D_I

  • Newbie
  • *
  • Posts: 6
Ошибка при апгрейде SMF-1.1.21 до SMF-2.0.11
« on: January 08, 2016, 02:34:07 PM »
Здравствуйте, решил проапгрейдить форум с версии 1.1.21 до 2.0.11, но получаю ошибку:
Quote
Executing database changes
Please be patient - this may take some time on large forums. The time elapsed increments from the server to show progress is being made!
Executing upgrade script 1 of 2.
Executing: "Updating holidays and calendar..." (5 of 19 - of this script)

!!
Error!
Incorrect date value: '0000-00-00' for column 'eventDate' at row 1
В таблице backup_forum_calendar_holidays, в первой строке такие данные:
ID_HOLIDAY    eventDate            title
1                   0004-01-01    New Year's

Подскажите, в чем может быть ошибка и как ее исправить?
« Last Edit: January 08, 2016, 02:58:39 PM by G_D_I »

Offline G_D_I

  • Newbie
  • *
  • Posts: 6
Re: Ошибка при апгрейде SMF-1.1.21 до SMF-2.0.11
« Reply #1 on: January 10, 2016, 08:09:41 AM »
Похоже, что ошибку вызывает следующий код в файле upgrade_1-1.sql в строке 757
Code: [Select]
UPDATE {$db_prefix}calendar_holidays
SET eventDate = '0001-01-01'
WHERE eventDate = '0000-00-00';
По крайней мере, если пытаться выполнить этот SQL запрос на сервере, то он возвращает ту же ошибку. Во всей таблице в полях eventDate нет ни одного значения '0000-00-00'.
Правильно ли будет просто удалить эту часть кода из SQL скрипта?

UPD. Закоментировал код, теперь другая ошибка:
Quote
Error!
Incorrect date value: '0000-00-00' for column 'endDate' at row 1
Похоже что от этого кода:
Code: [Select]
UPDATE {$db_prefix}calendar
SET endDate = startDate
WHERE endDate = '0001-01-01'
OR endDate = '0000-00-00';
Странно что этот код стоит в строке 739, т.е. выше кода что я закомментировал ранее.

Следующая ошибка
Quote
Error!
Incorrect date value: '0000-00-00' for column 'startDate' at row 1
и следующий кусок кода
Code: [Select]
UPDATE {$db_prefix}calendar
SET startDate = '0001-01-01'
WHERE startDate = '0000-00-00';

Еще одна ошибка:
Quote
!! Error! Incorrect date value: '0000-00-00' for column 'birthdate' at row 1
код в строке 780
Code: [Select]
UPDATE {$db_prefix}members
SET birthdate = '0001-01-01'
WHERE birthdate = '0000-00-00';

потом ошибка для кода в строке 773
Code: [Select]
UPDATE {$db_prefix}log_activity
SET date = '0001-01-01'
WHERE date = '0000-00-00';

Очень похоже на то что это проблемы с совмкстимостью MySQL сервера, у меня стоит 5.7.10
После комментирования всех частей кода что я приводил ранее, апгрейд прошел дальше и споткнулся на ошибке
Quote
Error!
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IGNORE TABLE хххххх_log_floodcontrol CHANGE COLUMN ip ip char(16) NOT NUL' at line 1

за это отвечает код в строке 879
Code: [Select]
---# Updating flood control log...
ALTER IGNORE TABLE {$db_prefix}log_floodcontrol
CHANGE COLUMN ip ip char(16) NOT NULL default '                ';

Вот в синтаксисе SQL я не силен, подскажите, что тут не так?
« Last Edit: January 10, 2016, 08:51:28 AM by G_D_I »

Offline G_D_I

  • Newbie
  • *
  • Posts: 6
Re: Ошибка при апгрейде SMF-1.1.21 до SMF-2.0.11
« Reply #2 on: January 10, 2016, 11:52:34 AM »
Отвечаю сам себе, так уж повелось в этой теме.
Ошибка с синтаксисом связана с версией MySQL. У меня на сервере стоит MySQL 5.7.10. В документации я нашел следующую строку
Quote
As of MySQL 5.7.4, the IGNORE clause for ALTER TABLE is removed and its use produces an error.
После этого я удалил слово IGNORE  из всех запросов ALTER TABLE и апгрейд отработал штатно. Но форум был а режиме обслуживания, причем, не простом, а в untouchable. Зайти в администрирование или залогиниться на форуме невозможно. Этот режим снимается только правкой файла Settings.php
Code: [Select]
# Note: If $maintenance is set to 2, the forum will be unusable!  Change it to 0 to fix it.
$maintenance = 2; # Set to 1 to enable Maintenance Mode, 2 to make the forum untouchable. (you'll have to make it 0 again manually!)
Собственно, из комментариев все понятно, надо поставить режим "0".
После этого форум заработал в нормальном режиме.