Миграция Rails, выдающая ошибки при использовании с MSSQL [MicroSoft SQL SERVER] - Не удается найти тип данных primary_key - PullRequest
0 голосов
/ 15 августа 2011

Я работаю над проектом Rails 3, где я изначально использовал MySQL как RDBMS. Но позже мой клиент попросил нас использовать MSSQL. Потратив полдня, я могу подключиться к серверу MSSQL, используя статью здесь: http://oldwiki.rubyonrails.org/rails/pages/HowtoConnectToMicrosoftSQLServerFromRailsOnLinux

Но после всех попыток, когда я попытался мигрировать, я получил следующую ошибку:

Вот ошибка с граблями db: migrate

==  CreateUsers: migrating ====================================================
-- create_table(:users)
rake aborted!
An error has occurred, all later migrations canceled:

37000 (2715) [unixODBC][FreeTDS][SQL Server]Column, parameter, or variable #1: Cannot find data type primary_key.

Tasks: TOP => db:migrate
(See full trace by running task with --trace)

Когда я повторно запускаю ту же команду, я получаю сообщение об ошибке:

rake aborted!
S0001 (2714) [unixODBC][FreeTDS][SQL Server]There is already an object named 'schema_migrations' in the database.
  • , что означает, что по крайней мере соединение работает!

Ниже приведена ошибка с rake db: схема: нагрузка

-- create_table("banners", {:force=>true})
rake aborted!
37000 (2715) [unixODBC][FreeTDS][SQL Server]Column, parameter, or variable #1: Cannot find data type primary_key.

Я погуглил на ошибку, но не смог найти никакой помощи, кажется, это не популярная комбинация.

В настоящее время я смотрю на эту проблему двумя способами:

  1. попробуйте решить проблему вручную, заставив рельсы выводить SQL в формате MSSQL. А если первый не получится, то

  2. в качестве обходного пути преобразуйте необработанный дамп mysql в формат MSSQL.

1 Ответ

0 голосов
/ 20 августа 2011

Поскольку я не получил ответов, я выбрал решение, близкое к # 2 выше.Я создал таблицы базы данных одну за другой с помощью мастера импорта и экспорта MSSQL, подключив его через MySQL DSN.Я все еще ищу способ сделать это чисто рельсовым способом, потому что каждый раз, когда я меняю какие-либо модели, мне приходится вручную обновлять базу данных MSSQL.

...