Преобразование приложения Ruby on Rails из sqlite в MySQL?
Я сделал приложение в Ruby on Rails, и теперь я хочу, чтобы он был размещен. Однако они требуют, чтобы я использовал MySQL, и я установил его с помощью sqLite3. Есть ли способ преобразовать его в использование MySQL?
5 ответов:
Шаг 0
чтобы быть в безопасности, я рекомендую немного поэкспериментировать с этой техникой в виртуальной машине. Сохраните себе кучу сердечной боли и создайте виртуальную машину, проверьте свой код и создайте безопасную игровую площадку, которую вы можете выбросить, если произойдет трагедия.
Шаг 1
сделайте резервную копию своей базы данных.yml-файл.
(от корня приложения)
cp config/database.yml config.database.yml.sqlite3
Шаг 2
сделать резервная копия ваших данных
для рельсов 3 Установите YAML DB gem:https://github.com/ludicast/yaml_db
Для Рельсов 2.x установите плагин YAML DB:
script/plugin install git://github.com/adamwiggins/yaml_db.git
запустите задачу дампа
rake db:dump
Шаг 3
обновление конфигурации базы данных.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**
обязательно обновите значения, окруженные asterix в соответствии с вашей платформой! Значение сокета подходит только для Mac OSX с использованием MacPorts. Большинство разновидностей linux не требуют этого значения.
Шаг 5
если у вас есть некоторые ошибки в следующем шаге, возможно, вам придется установить MySQL gem:
sudo gem install mysql
есть грабли создать свою базу данных
rake db:create rake db:schema:load
Шаг 6
используйте YamlDb для перезагрузки данных в MySql
rake db:load
до тех пор, пока вы не написали никаких инструкций SQL, которые выполняются в sqlLite3, а не MySQL (который у вас не будет, если весь ваш доступ к базе данных осуществляется через ActiveRecord и миграции ActiveRecord), все, что вам нужно сделать, это изменить адаптер базы данных в вашей базе данных.конфигурационный файл yml.
Регистрация Taps. Я успешно преобразовал базу данных Mysql в Postgres с ней-она должна поддерживать SQLite.
Edit: включая рабочую ссылку из комментария кони здесь.