解决’Can’t create table jumpserver.assets_myasset (errno: 150 “Foreign key constraint is incorrectly formed

By | 2025/05/23

这是jumpserver升级时候遇到的一个问题,数据库是mariadb,主要存在于跨大版本更新。错误的核心是外键约束错误。

错误的原因应该是jumpserver没有指定表结构的COLLATE值,这样就导致了不同版本mariadb设置的COLLATE默认值可能不同,在有新的表创建时,就会出现外键约束格式不正确。这也解释了为什么大版本更新的时候更容易出现这个问题。

解决方式也很简单,就是让数据库保持COLLATE一致即可,解决办法如下:

  1. 一般升级时,jumpserver会自动备份表,找到备份的sql文件;
  2. 编辑sql文件,把COLLATE及值全部删除;
  3. 删除整个jumpserver数据库,然后新建数据库;
  4. 使用./jmsctl restore_db 文件完整路径还原数据库;

此时就可以顺利升级了。

© 2025, 爱上生活. 版权所有,非商业使用转载必须提供本文章的原始链接。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注