Konwersja aplikacji Ruby on Rails z sqlite na MySQL?

Zrobiłem aplikację w Ruby on Rails i teraz chcę ją hostować. Jednak wymagają, że używam MySQL i skonfigurować go za pomocą sqLite3. Czy jest jakiś sposób, aby przekonwertować go do korzystania z MySQL?

Author: Austin Richardson, 2009-11-04

5 answers

Krok 0

Aby być bezpiecznym, polecam trochę poeksperymentować z tą techniką w maszynie wirtualnej. Oszczędź sobie bólu serca i zbuduj maszynę wirtualną, sprawdź swój kod i miej bezpieczny plac zabaw, który możesz wyrzucić, jeśli dojdzie do tragedii.

Krok 1

Zrób kopię zapasową swojej bazy danych.plik yml.

(z katalogu głównego aplikacji)

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

Krok 2

Zrób kopię zapasową swoich danych

Dla Rails 3, zainstaluj YAML DB gem: https://github.com/ludicast/yaml_db

Dla Rails 2.x zainstaluj wtyczkę YAML DB:

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

Uruchom zadanie zrzutu

rake db:dump

Krok 3

Zaktualizuj swoją konfigurację/bazę danych.plik yml. Znajdziesz tu wpisy typu

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

Zmień je na

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**

Pamiętaj, aby zaktualizować wartości otoczone przez asterix odpowiednio dla Twojej platformy! Wartość gniazda jest dobra tylko dla Mac OSX przy użyciu MacPorts. Większość wersji Linuksa nie wymaga tej wartości.

Krok 5

Jeśli masz jakieś błędy w następnym kroku, być może będziesz musiał zainstalować Gem mysql:

sudo gem install mysql

Niech rake stworzy twoją bazę danych

rake db:create
rake db:schema:load

Krok 6

Użyj YamlDb do przeładowania danych do MySql

rake db:load

 115
Author: marshally,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-25 15:20:32

Dopóki nie napisałeś żadnych poleceń SQL, które działają w sqlLite3, a nie MySQL (których nie będziesz mieć, jeśli cały dostęp do bazy danych odbywa się poprzez migracje ActiveRecord i ActiveRecord), wszystko, co musisz zrobić, to zmienić adapter Bazy danych w swojej bazie danych.plik konfiguracyjny yml.

 7
Author: DanSingerman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-03 21:12:26

Sprawdź Dotknij . Z powodzeniem przekonwertowałem bazę danych Mysql do Postgres-powinien obsługiwać SQLite.

Edit: W Tym link roboczy z komentarza cony tutaj.

 6
Author: pantulis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-07 03:40:22
myproject  user$ cd
user   $ rails new myproject -d mysql

Powiedz " nie "dla wszystkich pytań, ale dla Overwrite .../myproject/config/*database.yml*? (enter "h" for help) [Ynaqdh] Powiedz "TAK".

 4
Author: Mikaele,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-03 18:45:34

Jeśli nie ma danych do migracji, po prostu zaktualizuj bazę danych.yml i uruchom 'rake db: schema: load'w nowym środowisku. (Nie db: migrate, który powinien być używany tylko dla migracji przyrostowych!)

 3
Author: ScottJ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-03 23:46:01