(此文档仅供参考)
问题现象
连接mysql8.0作为知识库,空库启动后报错:Multiple primary key defined
问题原因
smartbi部署在空库启动的时候,会先创建表执行create table, 然后去ALTER TABLE ADD CONSTRAINT PRIMARY KEY添加(联合)主键,例如:
...
而MYSQL8.0.30之后增加了一个新特性sql_generate_invisible_primary_key,会在创建表时自动为表生成一个不可见的主键。在开启了此设置项后,此时创建的表已经有一个隐式生成的主键,那么再次通过ALTER TABLE尝试显式地添加或修改主键时,MySQL 会报错,因为它不允许一个表有多个主键。就会报错Multiple primary key defined,因为它不允许一个表有多个主键。
解决方案
1、检查MySQL的配置文件是否配置了sql_generate_invisible_primary_key=1,如有可注释/删除掉此行代码,重启MySQL。
修改路径:编辑my.cnf来修改(windows下my.ini),在[mysqld]段或者mysql的server配置段进行修改。
...