在某些版本的mysql上(例如5.0.77, for Win32 (ia32)
)我遇到以下问题时遇到问题
ALTER TABLE `table_name` CHANGE COLUMN `old` `new` integer auto_increment
我正在Incorrect table definition; there can be only one auto column and it must be defined as a key
如何可以省略?
答案 0 :(得分:2)
如果列已经一个自动增量主键,只需更改其名称并提供数据类型即可。 (如果此处未提供数据类型,MySQL将出错)。将保留现有的自动增量和键定义。
ALTER TABLE `table_name` CHANGE COLUMN `old` `new` INT
如果您要更改其名称并在以前不存在的情况下进行自动增量,则需要指定索引或将其作为同一语句中的主键:
ALTER TABLE `table_name` CHANGE COLUMN `old` `new` INT PRIMARY KEY AUTO_INCREMENT
但请注意,如果此表上的另一个列已用作AUTO_INCREMENT
,则报告的错误是正确的,您将无法指定第二个{{ 1}}列。你必须选择其中一个。
答案 1 :(得分:0)
您需要先禁用自动增量,然后进行更改,然后将其返回auto_increment。 试试这个(这会把它改成INT):
ALTER TABLE `table_name` MODIFY COLUMN `old` INT;
ALTER TABLE `table_name` CHANGE COLUMN `old` `new` integer
ALTER TABLE `table_name` MODIFY COLUMN `new` INT AUTO_INCREMENT;
答案 2 :(得分:0)
试试这个:
ALTER TABLE `t1` CHANGE COLUMN `uid` `id` INT AUTO_INCREMENT;
另一个有趣的答案:
ALTER TABLE table_name MODIFY COLUMN 'old_id','new_id' INT auto_increment;