首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置database.yml

如何设置database.yml
EN

Stack Overflow用户
提问于 2015-07-15 18:44:04
回答 2查看 3.4K关注 0票数 1

我正在尝试设置rails,以便使用SQL server 2005在64位windows 7机器上进行本地开发。我们有一个现有的数据库,它不符合红宝石的方式,所以我创建了一个表来测试一致性。

无法找到正确配置database.yml文件的信息,我怀疑我的问题在那里。我已经定义了32位和64位的DSN。当我运行控制台时,我会得到"Table不存在“

这是我的database.yml。我不知道

代码语言:javascript
复制
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:

代码语言:javascript
复制
CREATE TABLE [dbo].[Cars](
    [ID] [int] NULL,
    [Name] [nchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY]

创建一个模型类Car < ActiveRecord::Base

但我得到的“桌子不存在”后,连接到汽车,并进入‘汽车’。有人知道下一步要调试什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-15 19:08:34

&default中的default: &default,意味着使YAML命名空间下的键/值对作为变量*default可用。

<<: *default行接受这些键/值对,并使它们成为其他组的一部分,因此您只需要更改与default:组不同的值。

如果您的所有数据库都在同一台计算机上,那么您的database.yml应该很像这样:

代码语言:javascript
复制
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为您完成)。

票数 2
EN

Stack Overflow用户

发布于 2015-07-16 16:49:42

来自:https://github.com/rails-sqlserver/activerecord-sqlserver-adapter

强制模式到小写 虽然没有必要,但是Ruby的惯例是使用小写的方法名。如果您的数据库架构是大写或混合大写,我们可以在架构反射过程中强制所有表名和列名为小写。将其添加到适配器的配置/初始化程序文件中。

代码语言:javascript
复制
ActiveRecord::ConnectionAdapters::SQLServerAdapter.lowercase_schema_reflection = true

模式和用户 根据用户和模式设置的不同,可能需要使用dbo的表名前缀。所以,在ActiveRecord或适配器的初始化文件中,会出现这样的情况。

代码语言:javascript
复制
ActiveRecord::Base.table_name_prefix = 'dbo.'
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31438562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档