【问题标题】:YAML syntax error occurred while parsing config/database.yml [closed]解析 config/database.yml 时发生 YAML 语法错误 [关闭]
【发布时间】:2015-07-02 17:20:54
【问题描述】:

请注意,YAML 必须始终使用空格进行缩进。标签 不允许。

错误: (): 发现无法启动任何标记的字符同时 在第 17 行第 13 列扫描下一个标记

Ruby 版本为:ruby 2.2.1p85(2015-02-26 修订版 49769) [x86_64-linux] Rails 版本是:Rails 4.2.3

我使用的是 Ubuntu 14.04 LTS 64 位

完整的database.yml 文件:

# MySQL.  Versions 5.0+ are recommended.
#
# Install the MYSQL driver
#   gem install mysql2
#
# Ensure the MySQL gem is defined in your Gemfile
#   gem 'mysql2'
#
# And be sure to use new-style password hashing:
#   http://dev.mysql.com/doc/refman/5.0/en/old-client.html
#
default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password: 
  socket: /var/run/mysqld/mysqld.sock

development:
 <<: *default
 database: readit_development

# 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: readit_test

# As with config/secrets.yml, you never want to store sensitive information,
# like your database password, in your source code. If your source code is
# ever seen by anyone, they now have access to your database.
#
# Instead, provide the password as a unix environment variable when you boot
# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
# for a full rundown on how to provide these environment variables in a
# production deployment.
#
# On Heroku and other platform providers, you may have a full connection URL
# available as an environment variable. For example:
#
#   DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase"
#
# You can use this database configuration with:
#
#   production:
#     url: <%= ENV['DATABASE_URL'] %>
#
production:
  <<: *default
  database: readit_production
  username: readit
  password: <%= ENV['READIT_DATABASE_PASSWORD'] %>

【问题讨论】:

  • 错误在第 17 行,我以为是密码行。可能是空格字符之类的拼写错误尝试删除“密码:”之后的空格。
  • 文件中隐藏的内容。我只是复制/粘贴了上面的内容,并且能够在带有 ruby​​ 2.2.2p95 的 OSX 上很好地导入它。

标签: ruby-on-rails ruby yaml


【解决方案1】:

这看起来像是您正在使用的解析器中的错误,或者像 Philip 建议的那样,是一个隐藏字符。

使用

yaml round-trip database.yml

您没有收到解析器错误,并且输出与输入文件相同,除了空行(已删除)和 development 的映射值在 1 个空格处缩进不一致(但这不是 YAML 错误,因为它只需要在相同的映射/序列中进行一致的缩进)。

【讨论】:

    【解决方案2】:

    在密码字段中留一个空格。

    例如:

    adapter: mysql2
    encoding: utf8
    pool: 5 
    username: root  
    password:_*****
    

    【讨论】:

      【解决方案3】:

      一种了解您的 YAML 是否正确的解决方案

      http://www.yamllint.com/

      粘贴您的 YAML 并点击“开始” - 我们会告诉您它是否有效,并为您提供一个干净整洁的 UTF-8 版本。针对 Ruby 进行了优化。

      【讨论】:

      • 似乎提问的人已经知道 YAML 无效。你的回答没有回答他的“为什么”问题
      • 我遇到了同样的错误,这个页面对我没有帮助,我在另一个博客上找到了一个解决方案,它帮助我解决了这个 linter,它为我指出了解决方案......这是一个语法问题。但如果你有解决方案,请帮助我们,谢谢
      猜你喜欢
      • 2018-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-03
      • 2014-04-02
      • 2011-10-26
      • 2014-09-02
      • 2014-04-26
      相关资源
      最近更新 更多