【问题标题】:Why I get `ActiveRecord::NoDatabaseError: Unknown database` error when trying to use numbers and underline in database name?为什么在尝试在数据库名称中使用数字和下划线时出现“ActiveRecord::NoDatabaseError: Unknown database”错误?
【发布时间】:2016-12-22 09:04:22
【问题描述】:

我正在使用 ruby-2.2.4Rails 4.2.5MySQL 5.7.16 与 gem mysql2 在我的 Ruby on Rails 应用程序中。我创建了名为123_4 的数据库,并在/config/database.yml 中设置了数据库名称。

为什么我在尝试rake db:migrate 时收到错误ActiveRecord::NoDatabaseError: Unknown database '1234'

如果我尝试运行rake db:create 名称为1234 的数据库将被创建。

如果我使用123_abc4 作为数据库名称,一切都很好。

我的database.yml 内容:

production: 
   adapter: mysql2 
   database: 123_4 
   host: localhost 
   username: user 
   password: "pass" 
   encoding: utf8

【问题讨论】:

  • 你能显示你的 database.yml 吗?
  • 添加到问题
  • 有趣。这可能是rails中的错误吗?打开一个问题怎么样? github.com/rails/rails/issues/new
  • 我不知道是rails还是活动记录错误。你能在你的环境中重现它吗?
  • @Abhi,谢谢你的链接,但这只是惯例,没有参考 MySQL 文档。如果您有兴趣,请查看 Thanh Huynh 的答案

标签: mysql ruby-on-rails database rails-activerecord


【解决方案1】:

标识符可以以数字开头,但除非被引用,否则标识符可能不完全由数字组成。

MySQL Schema Object Name

所以你可以使用123_abc4,因为它包含字母。

如果只包含数字,则需要引用:'123_4'

【讨论】:

  • 谢谢你,@ThanhHuynh。您的回答阐明了错误原因
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-20
  • 2016-02-05
  • 2021-03-01
  • 2021-06-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多