ruby 在我的Rails应用程序上运行“heroku run rake db:migrate”时出现YAML语法错误

tcbh2hod  于 2023-08-04  发布在  Ruby
关注(0)|答案(3)|浏览(125)

我花了几个小时寻找这个问题的每一个解决办法,但就是找不到。
我有一个Rails应用程序,我试图将它部署到heroku,但当我运行heroku run rake db:migrate时,我得到了这个错误:

rake aborted!
YAML syntax error occurred while parsing /app/config/database.yml. Please note that YAML must be consistently indented using spaces. Tabs are not allowed. Error: (<unknown>): did not find expected key while parsing a block mapping at line 7 column 3

字符串
我已经使用YAML validator来验证我的database.yml,但它仍然不起作用。它看起来像这样:

# database.yml
--- 
default: 
  adapter: postgresql
  encoding: unicode
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
development: 
  adapter: postgresql
  database: chamada_development
  encoding: unicode
  password: "<%= ENV['CHAMADA_DATABASE_PASSWORD'] %>"
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: chamada
production: 
  adapter: postgresql
  database: chamada_production
  encoding: unicode
  password: "<%= ENV['CHAMADA_DATABASE_PASSWORD'] %>"
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: chamada
test: 
  adapter: postgresql
  database: chamada_test
  encoding: unicode
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>


我该怎么解决这个问题?我不知道。

2w3kk1z5

2w3kk1z51#

行中使用单引号

password: <%= ENV['CHAMADA_DATABASE_PASSWORD'] %>

字符串
你使用了双引号,所以它就像:
"<%= ENV["CHAMADA_DATABASE_PASSWORD"] %>"
这就是为什么错误。

wvyml7n5

wvyml7n52#

更新:我已经有一段时间没有在Heroku上工作了,但是我在我的数据库.yml文件中发现了一个旧项目,其中包含以下注解:

# On Heroku and other platform providers, you may have a full connection URL
# available as an environment variable. For example:
#
#   DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase"
#
# You can use this database configuration with:
#
#   production:
#     url: <%= ENV['DATABASE_URL'] %>

字符串
您可能需要确保正确设置了环境变量。通过运行heroku config --app <your-app-name>进行检查
不需要----
如果你要设置默认值,你也可以用它来避免重复。还可以使用单引号并删除字符串插值。您可以在每个组之间添加空行。

default: &default 
  adapter: postgresql
  encoding: unicode
  pool: <%= ENV.fetch('RAILS_MAX_THREADS') { 5 } %>

development:
  <<: *default 
  database: chamada_development
  password: <%= ENV['CHAMADA_DATABASE_PASSWORD'] %>
  username: chamada

production: 
  <<: *default
  url: <%= ENV['DATABASE_URL'] %>

test:
  <<: *default
  adapter: postgresql
  database: chamada_test

dgiusagp

dgiusagp3#

我只是一步一步地解决了它,在Heroku中部署应用程序。

相关问题