我正在尝试将列添加到我的一个数据库表中,但是存在语法错误 我似乎无法找到问题...
我当前的数据库表如下所示:
component + tag_id + item_id
------------|----------|-----------
com_content | 23 | 2642
com_content | 26 | 3481
com_content | 35 | 1868
com_content | 85 | 5827
com_content | 89 | 7882
我希望它看起来像这样,其中'id'是自动递增,所有列都是主键的一部分
id + component + tag_id + item_id
-----|--------------|----------|-----------
1 | com_content | 23 | 2642
2 | com_content | 26 | 3481
3 | com_content | 35 | 1868
4 | com_content | 85 | 5827
5 | com_content | 89 | 7882
这是我的查询:
DROP PRIMARY KEY
ALTER TABLE gitags_items
ADD COLUMN id INT NOT NULL AUTO_INCREMENT FIRST
PRIMARY KEY (id,component,tag_id,item_id)
但是我收到此错误消息:
#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 'PRIMARY KEY ALTER TABLE gitags_items ADD COLUMN id INT NOT NULL AUTO_INC' at line 1
非常感谢任何帮助/指示
答案 0 :(得分:14)
'ALTER TABLE'位必须先出现,然后每个部分必须用逗号分隔:
ALTER TABLE gitags_items
DROP PRIMARY KEY,
ADD COLUMN id INT NOT NULL AUTO_INCREMENT FIRST,
ADD PRIMARY KEY (id,component,tag_id,item_id);
但我不确定你是否可以在同一个语句中删除并创建一个主键。
答案 1 :(得分:2)
这个工作正常,逗号有问题,因为你要自己设置主键,所以不需要删除主键
ALTER TABLE gitags_items ADD id INT NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY(id,component,tag_id,item_id);
答案 2 :(得分:0)
首先,您必须在设置自动增量之前创建'id'列主键。
答案 3 :(得分:0)
尝试将以下代码添加到 my.cnf
sql-mode="NO_ENGINE_SUBSTITUTION,ERROR_FOR_DIVISION_BY_ZERO"
然后,重新启动MySQL
# service mysqld restart