我正在尝试设置rails,以便使用SQL server 2005在64位windows 7机器上进行本地开发。我们有一个现有的数据库,它不符合红宝石的方式,所以我创建了一个表来测试一致性。
无法找到正确配置database.yml文件的信息,我怀疑我的问题在那里。我已经定义了32位和64位的DSN。当我运行控制台时,我会得到"Table不存在“
这是我的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有人知道默认的工作原理吗?我找不到任何关于它的信息。特别是"<<:*默认“
我更新了database.yml文件。创建了一个用于测试的表;主键使用复数和ID:
CREATE TABLE [dbo].[Cars](
[ID] [int] NULL,
[Name] [nchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY]创建一个模型类Car < ActiveRecord::Base
但我得到的“桌子不存在”后,连接到汽车,并进入‘汽车’。有人知道下一步要调试什么吗?
发布于 2015-07-15 19:08:34
行&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为您完成)。
发布于 2015-07-16 16:49:42
来自:https://github.com/rails-sqlserver/activerecord-sqlserver-adapter
强制模式到小写 虽然没有必要,但是Ruby的惯例是使用小写的方法名。如果您的数据库架构是大写或混合大写,我们可以在架构反射过程中强制所有表名和列名为小写。将其添加到适配器的配置/初始化程序文件中。
ActiveRecord::ConnectionAdapters::SQLServerAdapter.lowercase_schema_reflection = true模式和用户 根据用户和模式设置的不同,可能需要使用dbo的表名前缀。所以,在ActiveRecord或适配器的初始化文件中,会出现这样的情况。
ActiveRecord::Base.table_name_prefix = 'dbo.'https://stackoverflow.com/questions/31438562
复制相似问题