Конвертировать приложение Ruby on Rails из sqlite в MySQL?

Я сделал приложение в Ruby on Rails, и теперь хочу, чтобы он был размещен. Тем не менее, они требуют, чтобы я использовал MySQL, и я настроил его с помощью sqlite3. Есть ли способ конвертировать его в MySQL?

Шаг 0

Чтобы быть в безопасности, я рекомендую немного поэкспериментировать с этой техникой на виртуальной машине. Спасите себя кучей страдания и создайте виртуальную машину, проверьте свой код и получите безопасную игровую площадку, которую можно выбросить, если ударит трагедия.

Шаг 1

Сделайте резервную копию вашего файла database.yml.

(из вашего корня приложения)

cp config/database.yml config.database.yml.sqlite3

Шаг 2

Сделайте резервную копию данных

Для Rails 3 установите JAML DB gem: https://github.com/ludicast/yaml_db

Для Rails 2.x установите плагин YAML DB:

script/plugin install git://github.com/adamwiggins/yaml_db.git

Запуск задачи дампа

rake db:dump

Шаг 3

Обновите файл config / database.yml. Вы найдете такие записи, как

 development: adapter: sqlite3 database: db/development.sqlite3 timeout: 5000 test: adapter: sqlite3 database: db/test.sqlite3 timeout: 5000 production: adapter: sqlite3 database: db/production.sqlite3 timeout: 5000 

Измените их на

 development: adapter: mysql encoding: utf8 reconnect: false database: **myapp_development** pool: 5 username: **root** password: **supersecretpassword** **socket: /opt/local/var/run/mysql5/mysqld.sock** test: adapter: mysql encoding: utf8 reconnect: false database: **myapp_test** pool: 5 username: **root** password: **supersecretpassword** socket: **/opt/local/var/run/mysql5/mysqld.sock** production: adapter: mysql encoding: utf8 reconnect: false database: **myapp_production** pool: 5 username: **root** password: **supersecretpassword** socket: **/opt/local/var/run/mysql5/mysqld.sock** 

Обязательно обновите значения, окруженные звездочкой, в зависимости от вашей платформы! Значение сокета полезно только для Mac OSX с использованием MacPorts. Большинство вариантов linux не требуют этого значения.

Шаг 5

Если на следующем шаге есть некоторые ошибки, возможно, вам придется установить gem mysql:

 sudo gem install mysql 

Создайте свою базу данных rake

 rake db:create rake db:schema:load 

Шаг 6

Используйте YamlDb для перезагрузки данных в MySql

rake db:load

До тех пор, пока вы не написали никаких SQL-операторов, которые выполняются в sqlLite3, а не в MySQL (чего у вас не будет, если весь доступ к базе данных осуществляется через миграции ActiveRecord и ActiveRecord), вам нужно всего лишь изменить адаптер базы данных в своей базе данных .yml конфигурационный файл.

Проверьте краны . Я успешно конвертировал базу данных Mysql в Postgres с ней – она ​​должна поддерживать SQLite.

Изменить: Включить рабочую ссылку из комментария Кони.

 myproject user$ cd user $ rails new myproject -d mysql 

Скажите «нет» для всех вопросов, но для Overwrite .../myproject/config/*database.yml*? (enter "h" for help) [Ynaqdh] Overwrite .../myproject/config/*database.yml*? (enter "h" for help) [Ynaqdh] говорят «да».

Если нет данных для переноса, просто обновите database.yml и запустите «rake db: schema: load» в новой среде. (НЕ db: migrate, который должен использоваться только для дополнительных перемещений!)

  • Как переменные экземпляра Rails передаются в представления?
  • Rails 4 link_to Destroy не работает в учебном руководстве по началу работы
  • Доступ к current_user в модели
  • Ruby on Rails form_ для выбора поля с classом
  • Как изменить порт по умолчанию сервера Rails 3 в развитии?
  • Поймать все исключения в controllerе рельсов
  • rails server bin / rails: 6: предупреждение: уже инициализированная постоянная ошибка APP_PATH
  • rails от многих до многих
  • Обезьяна патч в Rails 3
  • Разница между строкой и текстом в рельсах?
  • Переполнение печенья в рельсах?
  • Interesting Posts

    Как вызвать (gui) и использовать пароль root для скрипта?

    как изменить имя процесса приложения Java?

    Изменение паролей ключей

    NULL против нуля в Objective-C

    Как получить Django Admin для удаления файлов при удалении объекта из базы данных / модели?

    Scala – метод ClassTag не доступен для T

    Список телефонных номеров кодов стран

    Как создать открытую беспроводную сеть вместе с частной беспроводной сетью?

    Как маршрутизировать трафик через определенный прокси-сервер SOCKS для каждого приложения?

    Горячие клавиши Windows перестали работать

    Entity Framework. Есть ли способ автоматически загружать дочерние объекты без Include ()?

    MySQL запускает обновление поля до значения id

    Когда для доступа к свойствам с помощью «self»

    Заблокируйте блокировку экрана в Windows 8.1 до некоторого времени после выключения экрана

    Перерыв при изменении значения с помощью отладчика Visual Studio

    Давайте будем гением компьютера.