配置PostgreSQL数据库时执行rails db:create报错求助
问题原因分析
- Test环境数据库配置错误:test环境中
database字段设置为db/test. postgresql,PostgreSQL不允许数据库名包含路径分隔符/,且点号后存在空格,导致Rails生成SQL时错误地将其拆分为"db/test"和" postgresql"两个部分,触发语法错误。 - Development数据库已存在:提示
Database 'MyDatabase' already exists是正常提示,说明开发环境数据库已创建,不影响后续操作,但test环境的配置错误导致命令终止。 - YAML格式异常:development配置末尾有多余的反引号
,会导致YAML解析失败;test环境的<<: *default`缩进不正确,YAML对缩进要求严格。
解决办法
修正database.yml配置,调整后的完整内容如下:
default: &default adapter: postgresql pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> timeout: 5000 development: <<: *default encoding: unicode database: MyDatabase host: localhost username: name password: name # Warning: The database defined as "test" will be erased and # re-generated from your development database when you run "rake". # Do not set this db to the same as development or production. test: <<: *default database: MyDatabase_test production: <<: *default encoding: unicode database: MyDatabase_Production host: localhost username: name password: name role: MyRole
具体修改点:
- 移除development配置末尾的多余反引号`
- 修正test环境的缩进,确保
<<: *default与其他配置项对齐 - 将test环境的
database字段改为符合PostgreSQL规范的名称(如MyDatabase_test,避免路径、空格和特殊格式)
修改完成后,重新执行命令:
rails db:create
内容的提问来源于stack exchange,提问作者Olga N
相关产品推荐
相关产品推荐

