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?
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
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.
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.
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".
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!)
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