【一句话经验】n8n适配mysql5.7时报错AddMockedNodesColumnToTestDefinition时‘(‘[]‘) NOT NULL
可怜我的云服务器,为了省内存还是跑的mysql5.7。2)('[]')这个写法是mysql8的,修改成'[]',发现还有问题。然后保存,再运行n8n start就能成功生成表结构了。3)mysql5.7的JSON不能有默认值,因此要修改为NULL。1)mysql5.7是支持JSON的,所以应该能跑起来。
n8n默认是使用sqllite做存储,系统正好有mysql,于是换成mysql作为存储,资源能省则省。
报错信息如下:
Migration "AddMockedNodesColumnToTestDefinition1733133775640" failed, error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '('[]') NOT NULL' at line 1
可怜我的云服务器,为了省内存还是跑的mysql5.7。于是检查问题。。。
貌似最新几个版本出的问题,看了一下之前的版本,并对比了AddMockedNodesColumnToTestDefinition脚本,发现几个问题:
1)mysql5.7是支持JSON的,所以应该能跑起来
2)('[]')这个写法是mysql8的,修改成'[]',发现还有问题
3)mysql5.7的JSON不能有默认值,因此要修改为NULL
所以最终解决是修改脚本:
先搜索一下
find / -name *AddMockedNodesColumnToTestDefinition*
不同安装方式的位置不同,有的是npx,有的npm,我这用的是pnpm,所以目录在:
/root/.local/share/pnpm/global/5/.pnpm/@n8n+db@0.14.1_@opentelemetry+api@1.9.0_@opentelemetry+sdk-trace-base@1.30.1_@opentelem_a0ec8c155971cffbfda789ef0b895eae/node_modules/@n8n/db/dist/migrations/common/1733133775640-AddMockedNodesColumnToTestDefinition.js
打开把 :
await runQuery(`ALTER TABLE ${tableName} ADD COLUMN ${mockedNodesColumnName} JSON DEFAULT ('[]') NOT NULL`);
修改成:
await runQuery(`ALTER TABLE ${tableName} ADD COLUMN ${mockedNodesColumnName} JSON DEFAULT NULL`);
然后保存,再运行n8n start就能成功生成表结构了。工作也正常
[2025/7/25更新]
最新的n8n对于MySQL作为存储库已经标记为Deprecated,如果不使用sqlite,更推荐用postgresql作为主存储。所以还是用回postgresql吧,主要是由于其存储插件对于mysql支持逐渐出现不兼容(被遗弃)
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)