Mysql为主数据源时创建表报错

* 描述问题

随便创建一个表,提交就会报错:

日志

{"level":"error","message":"Incorrect table definition; there can be only one auto column and it must be defined as a key","meta":{"err":"Error
    at Query.run (/app/nocobase/node_modules/sequelize/lib/dialects/mysql/query.js:52:25)
    at /app/nocobase/node_modules/sequelize/lib/sequelize.js:315:28
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async _SyncRunner.handlePrimaryKeyBeforeSync (/app/nocobase/node_modules/@nocobase/database/lib/sync-runner.js:120:9)
    at async _SyncRunner.runSync (/app/nocobase/node_modules/@nocobase/database/lib/sync-runner.js:87:7)
    at async main_t_xxx_path.sync (/app/nocobase/node_modules/@nocobase/database/lib/model.js:57:12)
    at async _Collection.sync (/app/nocobase/node_modules/@nocobase/database/lib/collection.js:635:7)
    at async _AsyncEmitter.<anonymous> (/app/nocobase/node_modules/@nocobase/plugin-collection-tree/dist/server/plugin.js:71:13)
    at async _AsyncEmitter.emitAsync (/app/nocobase/node_modules/@nocobase/utils/lib/mixin/AsyncEmitter.js:63:7)
    at async t_xxx.<anonymous> (/app/nocobase/node_modules/@nocobase/database/lib/model-hook.js:88:9)
    at async t_xxx.runHooks (/app/nocobase/node_modules/sequelize/lib/hooks.js:96:7)
    at async t_xxx.sync (/app/nocobase/node_modules/sequelize/lib/model.js:1002:7)
    at async _SyncRunner.performSync (/app/nocobase/node_modules/@nocobase/database/lib/sync-runner.js:287:139)
    at async _SyncRunner.runSync (/app/nocobase/node_modules/@nocobase/database/lib/sync-runner.js:90:24)
    at async t_xxx.sync (/app/nocobase/node_modules/@nocobase/database/lib/model.js:57:12)
    at async _Collection.sync (/app/nocobase/node_modules/@nocobase/database/lib/collection.js:635:7)
    at async _AsyncEmitter.<anonymous> (/app/nocobase/node_modules/@nocobase/plugin-data-source-main/dist/server/server.js:258:9)
    at async _AsyncEmitter.emitAsync (/app/nocobase/node_modules/@nocobase/utils/lib/mixin/AsyncEmitter.js:63:7)
    at async _HasManyRepository.create (/app/nocobase/node_modules/@nocobase/database/lib/relation-repository/relation-repository.js:189:7)
    at async descriptor.value (/app/nocobase/node_modules/@nocobase/database/lib/decorators/transaction-decorator.js:84:29)
    at async create (/app/nocobase/node_modules/@nocobase/actions/lib/actions/create.js:37:20)
    at async triggerWorkflowActionMiddleware (/app/nocobase/node_modules/@nocobase/plugin-workflow-action-trigger/dist/server/ActionTrigger.js:61:7)"},"module":"collections/t_test/fields","submodule":"create","method":"error-handler","app":"lma","reqId":"184fdafa-c3d0-493b-af3a-838f22ce92aa","dataSourceKey":"main","timestamp":"2025-06-09 09:56:33"}

* 运行环境

  • NocoBase 版本:v1.7.5
  • 数据库种类与版本: MySQL 8.x
  • 操作系统:Windows
    -浏览器及版本
  • 部署方式:Docker
  • Docker 镜像版本:nocobase/nocobase:latest

提供详细信息:
是全新部署的空白应用,还是怎样

不是空白应用

我重新测试了一下,在配置字段中,添加一对一(belongsTo)、或者多对一字段时,被关联的表为树结构表时,会报这个错误,不是全部字段都会报错 @support

mysql数据表限制只允许一个自增字段,检查下“随便创建的表” 和 树表,是否在其中新增过自增字段,当时应该报错了,把字段删除掉

没有新增自增字段,但是新增有唯一约束(加上主键有两个唯一约束)

找到原因了,因为树结构表有一个管理路径的表:main_表名_path,该表没有主键,我之前手动给路径表都加上了主键列;把路径表的主键列删除之后问题解决,感谢 @support @hongboji 的关注。