你应该能够做到这一点,每个表,通过类似以下的(注代码:我认为每个*_id
字段的列描述为INTEGER NOT NULL
,而这些相同的字段有AUTO_INCREMENT
集这是非常正常的。一个ID列。)
# remove auto_increment, allows us to remove primary key
ALTER TABLE user MODIFY user_id INTEGER NOT NULL;
# remove primary key, allows us to change column name
ALTER TABLE user DROP PRIMARY KEY;
# change column name, re-add auto_increment and primary key
ALTER TABLE user CHANGE user_id id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY;
虽然注意到其他人的警告。除非这是你的创建(并且你刚刚决定在项目中或早些时候改变命名约定),否则改变它将打破任何其他希望与此数据库接口的代码。
希望这有助于
安东尼
编辑:上述假设你没有外键约束,在其他表显式引用user.user_id
列。如果不是这种情况,您必须在更改名称之前删除所有外键约束,然后在之后重新添加它们。如果你不确定那里有你的数据库外键关系,你可以列出他们都用下面的代码(从http://www.xinotes.org/notes/note/477/复制到改善答案的复制/粘贴能力):
SELECT CONCAT(table_name, '.', column_name, ' -> ', referenced_table_name, '.', referenced_column_name)
FROM information_schema.key_column_usage
WHERE referenced_table_schema = schema()
AND referenced_table_name is not null
ORDER BY table_name, column_name;
什么错误信息你得到? – 2010-05-27 20:01:45