执行rails db:migrate报错:relation 'users' does not exist
Rails迁移报错:PG::UndefinedTable: ERROR: relation "users" does not exist 解决办法
问题原因
你编写的是给users表新增字段的迁移,但数据库中还不存在users表,因此执行迁移时触发报错。你的猜测方向正确,但需要的不只是创建数据库,还得先完成users表的创建迁移。
解决步骤
确认数据库已创建
执行以下命令创建数据库(若尚未创建):rails db:create生成users表的迁移文件
如果db/migrate目录下没有类似[timestamp]_create_users.rb的文件,运行以下命令生成创建users表的迁移:# 生成基础User模型及空表迁移 rails generate model User # 如需初始字段(如邮箱、密码摘要),可指定字段生成 rails generate model User email:string password_digest:string执行后会得到一个时间戳更早的创建表迁移文件,它负责在数据库中生成
users表。执行迁移
直接运行迁移命令,Rails会按时间戳顺序先执行创建users表的迁移,再执行你编写的新增字段迁移:rails db:migrate
额外提示
- Rails迁移按文件名中的时间戳顺序执行,因此创建表的迁移时间戳必须早于新增字段的迁移时间戳,才能保证先建表后加字段。
- 如果你的新增字段迁移时间戳更早,可以手动修改文件名里的时间戳,调整执行顺序。
内容的提问来源于stack exchange,提问作者Nguyencuc2320
相关产品推荐
相关产品推荐

