我正在尝试修改一个表,如下所示:
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不起作用?
发布于 2016-08-07 08:49:40
问题出在下面的代码行中,根据文档中的语法,CHANGE需要一个新的列名,如CHANGE [COLUMN] old_col_name new_col_name column_definition
CHANGE COLUMN `id` bigint unsigned NOT NULL AUTO_INCREMENT,因此,您可以将其更改为
CHANGE COLUMN `id` `new_id` bigint unsigned NOT NULL AUTO_INCREMENT,(或者)考虑像使用MODIFY [COLUMN] col_name column_definition一样使用MODIFY
MODIFY [COLUMN] `id` bigint unsigned NOT NULL AUTO_INCREMENThttps://stackoverflow.com/questions/38809925
复制相似问题