首先原因在于没有设置主键自增长。
mysql的自增长模式是IDENTITY。
jpa标签:
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
设置主键自增长后,重启项目,要注意数据库里面主键生成模式是否真实被改变了。
navicat下很方便看到:
如果没有改变,查看无法改写的原因。
如果报错如此:
Cannot change column id used in a foreign key constraint
则表明因为外键的存在而无法改写
要想更改表结构,首先要把基层的表修改了。
A表 作为B表的外键,A表不能随便修改。
B表 有A表的外键,必须先处理好B,然后A才能修改。
所以建表的一开始就应该注明主键生成策略。
否则就把外键删除再来吧。