# 10.8 常见问题 :::tip 概述 生成器问题多集中在"推断不符预期"与"覆盖策略"两类。核心原则:**表注释是推断的输入质量,overwrite 是手写内容的安全阀**。 ::: ## 生成内容类 **Q:枚举列没有生成字典和 SerializeMaps?** 列注释须含标准枚举形态:`1-在用 2-停用`(取值-含义,空格分隔)。改 COMMENT 后重新生成。 **Q:树形表生成了普通页面?** 确认 parent_id 列存在且注释正常(父级ID)。树形识别依赖 parent_id 列。 **Q:唯一性校验没生成?** UniqueFields 推断自 `uk_` 前缀唯一索引——检查表上是否建了 uk_ 索引。 **Q:文件字段没有转正声明?** 文件列的识别依赖列语义(列名/注释)。必要时生成后手工在 FileFields 声明中补上。 ## 落盘与覆盖类 **Q:生成后手写内容丢了?** overwrite=true 会覆盖全部产物。有手写内容的模块必须 overwrite=false(或生成前提交 git 便于回滚)。 **Q:router.go 生成了重复声明?** 不会——声明块按模块标记幂等追加。若手工在块内加了方法,重新生成时非标准手工方法仍保留(声明块外的手写 handler 方法不受影响)。 **Q:菜单重复创建?** 菜单创建幂等(按名称/路径判定)。看到重复菜单时检查是否手工建过同名不同路径的菜单。 ## 运行类 **Q:Web 界面 404?** `generator.enable=false` 时生成器路由整体不注册。确认配置后重启。 **Q:生产环境能打开生成器?** 不正常。生产必须 enable=false;app.prod=true 时启动校验会直接拒绝这种组合。 **Q:CLI 报数据库连接失败?** 生成器需要连库内省。检查 database 配置;它不依赖 Redis(仅内省)。 ## 效率建议 - 建表评审时就按生成器的推断输入(注释/索引/列名)把关——源头质量决定产物质量 - 团队统一 overwrite 策略,避免"我这边覆盖了你那边跳过"的协作事故 - 模板定制走 preview 快速迭代,确认后再落盘 ## 相关 - [10.4 表结构解析与渲染引擎](/zh/generator/code-engine.html) - [10.6 配置与覆盖策略](/zh/generator/config.html)