我这里有一个相当大的问题...... 我们有一个MySQL数据库,其中包含超过2600万行的表。 现在,问题是我的Java代码正在生成主键(通过Hibernate注释),因为该列没有auto_increment标志。 (不知道为什么)
此设置可能会不时出现问题,例如PK列上的约束违规。 我想改变它,以便MySQL生成自动递增的PK。
有没有办法在不重建这个庞大的表的情况下向列添加auto_increment?及时,因为我们的服务窗口只有2个小时。
此致
答案 0 :(得分:0)
是的,这很容易。 首先,你必须找出你最高的指数是什么:
SELECT max(id_column) FROM your_table;
然后将表改为自动递增
ALTER TABLE your_table CHANGE COLUMN id_column AUTO_INCREMENT;
ALTER TABLE your_table AUTO_INCREMENT = the_value_from_above + 1;
我对确切的语法并不是100%肯定,因此您可能需要检查here或使用MySQL Workbench。 这不会重建表,只需更改元数据。
请记住,您还必须让hibernate知道auto_increment。