执行Hanami db migrate报错,数据插入后未写入SQLite问题求助
Hanami项目数据库迁移与数据插入问题排查
问题梳理
- 执行
bin/hanami db migrate时,数据库迁移提示完成,但结构导出失败,报错信息如下:
=> database db/bookshelf.sqlite migrated in 0.2763s Error: in prepare, near "projects": syntax error projects/bookshelf/db/bookshelf.sqlite ^--- error here !!! => "db/bookshelf.sqlite structure dumped to config/db/structure.sql" FAILED
- 在Hanami开发控制台执行数据插入命令后,数据库无数据写入,网站也无法显示书籍列表。
可能的操作错误点排查
- 数据库路径配置错误:报错中的路径
projects/bookshelf/db/bookshelf.sqlite包含多余的projects/前缀,检查config/database.yml中的数据库路径配置,确认是否与项目实际目录结构匹配。如果项目根目录为bookshelf,路径应直接写db/bookshelf.sqlite。 - 迁移未真正生效:虽然迁移提示完成,但结构导出失败可能意味着数据库结构未正确创建。用DB Browser for SQLite打开
db/bookshelf.sqlite,确认books表是否存在。 - 控制台环境不匹配:确认执行插入命令的控制台是否连接到
development环境的数据库。检查控制台启动时的环境标识,或核对config/database.yml中development节点的数据库路径。 - 事务未提交:Hanami控制台默认可能开启事务,插入操作若未提交不会写入数据库。尝试在插入后执行事务提交命令(如
Hanami::Model::Transaction.commit,根据Hanami版本调整),或检查控制台是否开启自动提交。
需要补充的信息
config/database.yml的完整内容db/migrate/目录下的迁移文件内容- 执行控制台插入命令后的完整输出(包括命令返回值)
- 项目的目录结构(重点是
db/和config/db/的位置)
内容的提问来源于stack exchange,提问作者corgipower
相关产品推荐
相关产品推荐

