执行rails db:system:change后rails server与db:migrate失效求助
解决Rails本地连接PostgreSQL导致的无限加载/迁移问题
核心解决方案
- 打开项目根目录下的
config/database.yml文件 - 将配置替换回SQLite3的默认格式:
default: &default adapter: sqlite3 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> timeout: 5000 development: <<: *default database: db/development.sqlite3 test: <<: *default database: db/test.sqlite3 production: <<: *default database: db/production.sqlite3
- 保存文件后,执行
rails db:create(如果本地开发数据库还未创建) - 重新运行
rails server或rails db:migrate即可正常使用
问题原因
rails db:system:change --to=postgresql命令会同时修改两个关键文件:
Gemfile:自动替换sqlite3gem为pgconfig/database.yml:将数据库适配器从sqlite3改为postgresql
你只手动改回了Gemfile的配置,但database.yml仍保留着PostgreSQL的连接设置。本地默认没有启动PostgreSQL服务或对应数据库,程序尝试连接时就会陷入无限等待,引发浏览器加载超时、迁移命令挂起的问题。
验证步骤
改完配置后,执行rails db:migrate应该能快速完成,启动rails server后,本地浏览器访问http://localhost:3000可以正常加载页面。
内容的提问来源于stack exchange,提问作者myself
相关产品推荐
相关产品推荐

