Инструкция по изменению столбца до utf8 выдает ошибку при использовании (ALTER IGNORE TABLE с MODIFY) - PullRequest
0 голосов
/ 14 января 2019

Я обновляю столбец до UTF-8, потому что мне нужно вводить корейские символы.

Первоначально я выполнил приведенный ниже запрос без IGNORE, но он вызвал ошибку.

ALTER TABLE db_name MODIFY column_name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

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

Я искал и нашел это:

Документация MySQL 5.7 говорит :

Строгий режим влияет на то, разрешает ли сервер «0000-00-00» в качестве допустимой даты: если строгий режим не включен, «0000-00-00» разрешен, и вставки не выдают предупреждение. Если включен строгий режим, «0000-00-00» не разрешается, и вставки выдают ошибку, если только не указан IGNORE. Для INSERT IGNORE и UPDATE IGNORE «0000-00-00» разрешено, а вставки выдают предупреждение.

Когда я запустил его с помощью IGNORE, он дал мне следующее:

ALTER IGNORE TABLE db_name MODIFY column_name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

ОШИБКА 1064 (42000): у вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с 'IGNORE TABLE db_name MODIFY column_name VARCHAR (255) CHARACTER SET utf8mb4 COLLATE utf8mb4' в строке 1

Я проверил оператор на валидаторе синтаксиса sql (eversql), и он не уловил эту ошибку.

Пожалуйста, помогите!

1 Ответ

0 голосов
/ 14 января 2019

Синтаксис ALTER IGNORE TABLE отсутствует. Смотрите документацию: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html

EverSQL, по-видимому, проверяет синтаксис, которого нет в MySQL.

Документация режима SQL, на которую вы ссылаетесь, ссылается на оператор INSERT IGNORE.

Чтобы устранить вашу ошибку, у вас есть два варианта:

  • Перед запуском ALTER TABLE замените все значения даты, такие как «0000-00-00», на действительную дату или же NULL.

  • Отключите строгую опцию в sql_mode, по крайней мере, в сеансе, где вы запускаете ALTER TABLE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...