Я создаю базы данных испытаний и разработки, которые отражают схему существующей производственной базы данных. Во-первых, я создаю дб/schema.rb сбросами производственной схемы:`rake db: schema: dump` создает схему с пустыми системными таблицами
RAILS_ENV=production rake db:schema:dump
Это создает schema.rb, который имеет пустую таблицу для каждой системной таблицы:
ActiveRecord::Schema.define(version: 0) do
create_table "MSreplication_objects", id: false, force: :cascade do |t|
end
...
Эти пустые таблицы ПРИЧИНА ошибка при попытке создать тестирование и разработку баз данных:
$ 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, я удаляю определение для системных таблиц, то базы данных создаются обычно:
$ rake db:reset
-- create_table("Org", {:primary_key=>"org_id", :force=>:cascade})
-> 0.0434s
-> -1 rows
...
Как я могу держать rake db:schema:dump
от демпинга определений для пустых системных таблиц, которые не могут быть созданы?
Версии:
- Microsoft SQL Server 2014 - 12.0.2000.8 (x64)
- рельсы (4.2.1)
- ActiveRecord-SQLServer-адаптер (4.2.4)
- tiny_tds от github:
- git: //github.com/rails-sqlserver/tiny_tds.git
- Commit c4e59ba82c0cc55a5587cec1b7d5100d1b1ccaf4
Получите реальную базу данных :)? Это звучит как проблема с адаптером/БД. – max
Также его 'rake db: schema: dump' – max
@papirtiger Спасибо за исправление. Это то, что происходит, когда я печатаю из памяти вместо вырезания и вставки. И да, я бы хотел, чтобы у меня была другая база данных. –