`rake db:schema:dump` 使用空系统表创建模式
`rake db:schema:dump` creates schema with empty system tables
我正在创建反映现有生产数据库架构的测试和开发数据库。首先,我通过转储生产模式创建 db/schema.rb:
RAILS_ENV=production rake db:schema:dump
这会创建一个 schema.rb,每个系统 table 都有一个空的 table:
ActiveRecord::Schema.define(version: 0) do
create_table "MSreplication_objects", id: false, force: :cascade do |t|
end
...
当我尝试创建测试和开发数据库时,这些空 tables 导致错误:
$ rake db:reset
-- create_table("MSreplication_objects", {:id=>false, :force=>:cascade})
rake aborted!
ActiveRecord::StatementInvalid: TinyTds::Error: Incorrect syntax near ')'.: CREATE TABLE [MSreplication_objects] ()
如果在 schema.rb 中删除了系统 table 的定义,则可以正常创建数据库:
$ rake db:reset
-- create_table("Org", {:primary_key=>"org_id", :force=>:cascade})
-> 0.0434s
-> -1 rows
...
如何防止 rake db:schema:dump
转储无法创建的空系统 table 的定义?
版本:
- 微软 SQL 服务器 2014 - 12.0.2000.8 (x64)
- rails (4.2.1)
- activerecord-sqlserver-adapter (4.2.4)
- tiny_tds 来自 git 中心:
- git://github.com/rails-sqlserver/tiny_tds.git
- 提交 c4e59ba82c0cc55a5587cec1b7d5100d1b1ccaf4
有希望:
ActiveRecord::SchemaDumper 大部分繁重的工作提供了一个忽略表的单例方法:
ActiveRecord::SchemaDumper.ignore_tables = ['MSreplication_objects', 'MSAnotherStupidSystemTable']
activerecord-sqlserver-adapter
似乎没有提供自己的 rake 任务来将架构(它应该)转储到应该完成的地方。
我正在创建反映现有生产数据库架构的测试和开发数据库。首先,我通过转储生产模式创建 db/schema.rb:
RAILS_ENV=production rake db:schema:dump
这会创建一个 schema.rb,每个系统 table 都有一个空的 table:
ActiveRecord::Schema.define(version: 0) do
create_table "MSreplication_objects", id: false, force: :cascade do |t|
end
...
当我尝试创建测试和开发数据库时,这些空 tables 导致错误:
$ rake db:reset
-- create_table("MSreplication_objects", {:id=>false, :force=>:cascade})
rake aborted!
ActiveRecord::StatementInvalid: TinyTds::Error: Incorrect syntax near ')'.: CREATE TABLE [MSreplication_objects] ()
如果在 schema.rb 中删除了系统 table 的定义,则可以正常创建数据库:
$ rake db:reset
-- create_table("Org", {:primary_key=>"org_id", :force=>:cascade})
-> 0.0434s
-> -1 rows
...
如何防止 rake db:schema:dump
转储无法创建的空系统 table 的定义?
版本:
- 微软 SQL 服务器 2014 - 12.0.2000.8 (x64)
- rails (4.2.1)
- activerecord-sqlserver-adapter (4.2.4)
- tiny_tds 来自 git 中心:
- git://github.com/rails-sqlserver/tiny_tds.git
- 提交 c4e59ba82c0cc55a5587cec1b7d5100d1b1ccaf4
有希望:
ActiveRecord::SchemaDumper 大部分繁重的工作提供了一个忽略表的单例方法:
ActiveRecord::SchemaDumper.ignore_tables = ['MSreplication_objects', 'MSAnotherStupidSystemTable']
activerecord-sqlserver-adapter
似乎没有提供自己的 rake 任务来将架构(它应该)转储到应该完成的地方。