我正在尝试在rails上设置ruby以使用SQL Server 2005在64位Windows 7机器上本地开发。我们有一个现有的数据库并且它不符合ruby方式所以我创建了一个表来测试连通性。
无法找到有关正确配置database.yml文件的信息我怀疑我的问题就在那里。我定义了32位和64位DSN。当我运行控制台时,我得到“表不存在”
这是我的database.yml。我不知道
default: &default
host: 111.222.333.444
adapter: sqlserver
mode: odbc
dsn: DSN_Name
database: ERP
username: sa
password: ********
development:
<<: *default
host: 111.222.333.444
adapter: sqlserver
mode: odbc
dsn: DSN_Name
database: ERP
username: sa
password: ********
# 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: db/test.sqlite3
production:
<<: *default
database: db/production.sqlite3
有谁知道默认有效吗?我找不到任何关于它的信息。特别是“&lt;&lt;:* default”
我更新了我的database.yml文件。创建了一个测试表;使用复数和ID作为主键:
CREATE TABLE [dbo].[Cars](
[ID] [int] NULL,
[Name] [nchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY]
创建了一个模型 class Car&lt;的ActiveRecord :: Base的 端
但在连接到Car并输入'Car'后,我得到“Table not exists”。任何人都知道调试它的下一步是什么?
答案 0 :(得分:1)
行&default
中的default: &default
表示将此YAML命名空间下的键/值对作为变量*default
提供。
<<: *default
行正在获取这些键/值对,并使其成为其他组的一部分,因此您只需要更改与default:
组不同的值。
如果您的所有数据库都在同一台计算机上,那么您的database.yml
应该看起来很像这样:
default: &default
host: 111.222.333.444
adapter: sqlserver
mode: odbc
dsn: DSN_Name
username: sa
password: ********
development:
<<: *default
database: ERP_development
test:
<<: *default
database: ERP_test
production:
<<: *default
database: ERP_production
由于您使用的是sqlserver,因此您可能必须自己创建所有这些数据库(而不是让Rails为您执行此操作)。
答案 1 :(得分:0)
来自:https://github.com/rails-sqlserver/activerecord-sqlserver-adapter
强制架构为小写
虽然没有必要,但Ruby惯例是使用小写 方法名称。如果您的数据库架构是大写或大小写,我们 可以在架构反射期间强制所有表名和列名 过程是小写的。将其添加到您的config / initializers文件中 适配器。
ActiveRecord::ConnectionAdapters::SQLServerAdapter.lowercase_schema_reflection = true
架构&amp;用户
根据您的用户和架构设置,可能需要使用a 表名称前缀dbo ..所以在你的初始化程序中是这样的 ActiveRecord或适配器的文件。
ActiveRecord::Base.table_name_prefix = 'dbo.'