【问题标题】:Ruby script/console and Ruby script/server using two different DBs?Ruby 脚本/控制台和 Ruby 脚本/服务器使用两个不同的数据库?
【发布时间】:2010-03-21 23:00:52
【问题描述】:

有没有人看到脚本/控制台和脚本/服务器在哪里加载两个不同的数据库(尽管两者都使用相同的报告)?这是第一个输出

$ script/server
=> Booting WEBrick
=> Rails 2.3.5 application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2010-03-21 15:54:05] INFO  WEBrick 1.3.1
[2010-03-21 15:54:05] INFO  ruby 1.8.7 (2010-01-10) [i386-mingw32]
[2010-03-21 15:54:05] INFO  WEBrick::HTTPServer#start: pid=7148 port=3000

没有错误。然后我运行用于输入表单的标准代码 - 没问题。

检查开发数据库(底部的.yml):

mysql> select * from books;
[...]
| 712 | Book | Book Name | 2010-03-21 22:29:22 | 2010-03-21 22:29:22 |
[...]
712 rows in set (0.00 sec)

代码显然在几秒钟前保存了它

现在这里是脚本/控制台的输出:

$ script/console
Loading development environment (Rails 2.3.5)
>> Book.all
=> []

什么都没有。此外,经过进一步检查,它正在使用生产数据库,但我不知道为什么。这里有什么想法吗?所有控制台都已关闭并重新打开。

更新: 请求的 .yml 文件(看不出它有什么用(用户名和密码都相同)) -

development:
  adapter: mysql  
  database: BooksDBdev
  username: <user name>
  password: <long string>
  timeout: 5000

# 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:
  adapter: mysql
  database: BooksDBtest
  username: <user name>
  password: <long string>
  timeout: 5000

production:
  adapter: mysql
  database: BooksDB
  username: <user name>
  password: <long string>
  timeout: 5000

更新 2:这是我强制控制台环境时的输出。

$ script/console development
Loading development environment (Rails 2.3.5)
>> Book.all
=> []
>> exit

$ ruby script/console development
Loading development environment (Rails 2.3.5)
>> Book.all
=> []

仅供参考,我的环境变量中没有指定 RAILS_ENV。

【问题讨论】:

  • 你能说得更具体点吗? 什么在使用生产数据库?您说您检查了“开发数据库”...也许粘贴您的 database.yml?
  • 完成...命令“ruby script/console”使用生产数据库,尽管报告它正在使用开发数据库。命令“ruby script/server”使用开发数据库,​​因为它应该。
  • 如果显式使用环境名称会发生​​什么?例如脚本/服务器开发和脚本/控制台开发
  • 同样的处理——尽管控制台说“开发”,但它没有使用开发数据库。我想不通。

标签: ruby-on-rails ruby console


【解决方案1】:

您是否在不同的终端同时运行这些?如果是这样,您可能需要在控制台中执行 reload! 以显示数据库更改。

【讨论】:

  • 同一台机器,不同的终端......是的 - 但我已经关闭了所有终端很多次。无论如何,这不是模型更改 - 正如您所看到的,这是混乱的数据访问(访问错误的数据库)。
  • 哦。尝试注释掉 .yml 文件的生产和测试部分 - 也许它会抛出一个有用的错误。
  • 是的,当我这样做时,ruby 脚本/控制台失败了!正如我所说,奇怪的是,即使它声称它正在使用开发,它似乎正在使用生产。但不是服务器!
【解决方案2】:

复数型号名称?哎呀!你有另一个模型叫 Book 什么的吗?

【讨论】:

  • 不是真名 :) ... 这不是复数 irl。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-26
  • 1970-01-01
  • 2011-01-27
  • 1970-01-01
  • 2010-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多