IT Share you

Ruby on Rails 앱을 sqlite에서 MySQL로 변환 하시겠습니까?

shareyou 2020. 12. 14. 21:06
반응형

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의 경우 YAML 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**

Be sure to update the values surrounded by asterix as appropriate for your platform! The socket value is only good for Mac OSX using MacPorts. Most flavors of linux do not require this value.

Step 5

If you have some errors in the following step, you might have to install the mysql gem:

sudo gem install mysql

Have rake create your database

rake db:create
rake db:schema:load

Step 6

Use YamlDb to reload your data into MySql

rake db:load


As long as you have not written any SQL statements that run in sqlLite3 and not MySQL (which you won't have if all your database access is via ActiveRecord and ActiveRecord migrations) then all you need to do is change the database adapter in your database.yml config file.


Check Taps. I've successfully converted a Mysql database to Postgres with it --it should support SQLite.

Edit: Including working link from cony's comment here.


If there's no data to migrate, simply update database.yml and run 'rake db:schema:load' in the new environment. (NOT db:migrate which should only be used for incremental migrations!)


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

Say 'no' for all question but for Overwrite .../myproject/config/*database.yml*? (enter "h" for help) [Ynaqdh] say 'yes'.

참고URL : https://stackoverflow.com/questions/1670154/convert-a-ruby-on-rails-app-from-sqlite-to-mysql

반응형