Миграция данных Ruby On Rails из sqlite3 в mysql в отношении многих ко многим

0

У меня есть база sqlite3 в моем приложении rails, у которого есть файл development.sqlite3. Я хочу преобразовать базу данных в mysql Вот шаги, которые я предпринимаю, но все же у меня проблемы:

gem 'seed_dump' я добавляю и устанавливаю gem 'seed_dump' чтобы добавить данные в мой seed.rb (запустив rake db:seed:dump), потому что мне действительно нужно перенести мои данные.

2.Используйте конфигурацию database.yml настройки mysql.

development:
  adapter: mysql2
  encoding: utf8
  database: MyDB
  username: root
  password: ****
production:
  adapter: mysql2
  encoding: utf8
  database: MyDB
  username: root
  password: ****

3.Run rails db:create тогда rails db:schema:load.

4. Затем загрузите данные из семян, запустив rake db:seed:dump

Проблема заключается в том, что многие данные многих отношений (которые имеют таблицу в схеме db) не могут быть импортированы в mysql из моего seed.rb.

Я хочу знать, что есть ли другой безопасный способ переноса моих данных из sqlite3 в mysql вместо того, чтобы записывать их в seed.rb а затем читать их?

  • 1
    в идеале, если у вас есть таблица соединений и у вас есть файл seed.rb , то данные из таблицы соединений должны записываться при сохранении объектов, имеющих внешние ключи, в эту таблицу ... верно?
  • 0
    @FabrizioBertoglio Да, и этот драгоценный камень создает HABTM-подобную вещь в seed.rb, которая, когда я загружаю seed, получает ошибку!
Показать ещё 1 комментарий
Теги:
sqlite3
data-migration
has-and-belongs-to-many

1 ответ

0
Лучший ответ

Поскольку я искал другой способ решить проблему, я нашел то, что объявлено здесь. Я выполнил шаги, стоящие перед другой ошибкой mysql: Data is too long for column summary. Чтобы пропустить эту ошибку, я отключил mysql strict mode подобный этому в database.yml:

конфиг /database.yml

development:
  adapter: mysql2
  encoding: utf8
  database: myDB
  username: root
  password: ****
  host: localhost
  strict: false


production:
  adapter: mysql2
  encoding: utf8
  database: myDB
  username: root
  password: **** 
  host: localhost
  strict: false

Это решение более понятно, чем использование gem 'seed_dump' которое имеет проблемы с has and belongs to many отношениям!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню