Я пытаюсь изменить таблицу, как это:Ошибка синтаксиса для нескольких столбцов изменений в таблице alter?
ALTER TABLE book
ADD COLUMN `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP AFTER `id`,
CHANGE COLUMN `id` bigint unsigned NOT NULL AUTO_INCREMENT,
CHANGE COLUMN `author_id` bigint unsigned NOT NULL;
Но он продолжает давать эту ошибку синтаксиса:
#1064 - 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 'bigint unsigned NOT NULL AUTO_INCREMENT, CHANGE COLUMN `author_id` bigint un' at line 3
Я понятия не имею, где я собираюсь здесь не так. SQL, кажется, все в порядке со мной, и каждый из таблицы изменения может быть успешно выполнен индивидуально:
ALTER TABLE book ADD COLUMN `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP AFTER `id`;
ALTER TABLE book CHANGE COLUMN `id` bigint unsigned NOT NULL AUTO_INCREMENT;
ALTER TABLE book CHANGE COLUMN `author_id` bigint unsigned NOT NULL;
я могу использовать отдельные версии, но есть довольно некоторые большие таблицы, что мне нужно изменить так, что было бы лучше если я использую комбинированный запрос, который должен быть быстрее.
Почему не работает объединенный SQL?
«Это расширение MySQL для стандартного SQL, которое допускает только один из каждого предложения в отношении инструкции ALTER TABLE. Например, чтобы удалить несколько столбцов в одном из операторов, сделайте следующее: «Это похоже на ответ? Только один тип изменения столбца может быть в одном запросе таблицы изменений? –
@ kavoir.com, да, только одно дополнение/change/drop для инструкции alter table и не может быть скомбинирован. Проверьте правильность синтаксиса, и вы увидите это. – Rahul
@ kavoir.com, см. править в ответ для лучшего уточнения. – Rahul