복붙노트

[RUBY-ON-RAILS] 신선한 레일 프로젝트에서 SQLite는에서 PostgreSQL을로 변경

RUBY-ON-RAILS

신선한 레일 프로젝트에서 SQLite는에서 PostgreSQL을로 변경

나는이의 데이터베이스 SQLite는에 (dev에 생산) 것을 응용 프로그램을 레일있다. 내가 Heroku가 이동하고 있기 때문에, 나는 PostgreSQL을 내 데이터베이스를 변환하고 싶습니다.

나는 그러나, 변경할 필요가 없습니다 어쨌든, 나는, 지역, 개발, 데이터베이스 SQLite는 변경 될 필요가없는 것을 듣고 어떻게 SQLite는에서 PostgreSQL을에 생산 환경을 변경 가야합니까?

누구도이 이전 할 수 있습니다 도움을 수행 했습니까?

추신 나는 확실히 바로이 과정이 소위 아니지만, 내가 PostgreSQL을에 SQLite는에서 데이터베이스를 마이그레이션에 대한 들었어요, 무슨 일을해야한다는 것입니다?

해결법

  1. ==============================

    1.대신 상자 SQLite는 하나의 출력을 사용하는이에 database.yml을 변경할 수 있습니다 :

    대신 상자 SQLite는 하나의 출력을 사용하는이에 database.yml을 변경할 수 있습니다 :

    development:
      adapter: postgresql
      encoding: utf8
      database: project_development
      pool: 5
      username: 
      password:
    
    test: &TEST
      adapter: postgresql
      encoding: utf8
      database: project_test
      pool: 5
      username: 
      password:
    
    production:
      adapter: postgresql
      encoding: utf8
      database: project_production
      pool: 5
      username: 
      password:
    
    cucumber:
      <<: *TEST
    
  2. ==============================

    2.단계는 다음 날 위해 일했습니다. 그것은 탭 보석, Heroku가 만든 라이언 베이츠의 Railscast # 342에서 언급을 사용합니다. 이 몇 가지 단계가 있지만 (심지어 날짜가 올바르게 마이그레이션 된) 완벽하게 작동하고, 오라클보다 훨씬 쉬웠다 -> DB2 또는 SQL 서버 -> 오라클 마이그레이션 나는 과거에있다.

    단계는 다음 날 위해 일했습니다. 그것은 탭 보석, Heroku가 만든 라이언 베이츠의 Railscast # 342에서 언급을 사용합니다. 이 몇 가지 단계가 있지만 (심지어 날짜가 올바르게 마이그레이션 된) 완벽하게 작동하고, 오라클보다 훨씬 쉬웠다 -> DB2 또는 SQL 서버 -> 오라클 마이그레이션 나는 과거에있다.

    SQLite는이 사용자 ID 나 비밀번호가 필요하지만, 탭 보석을 가지고 있지 않습니다 뭔가가 필요합니다. 난 그냥 리터럴 "사용자"와 "비밀번호"를 사용했다.

    새로운 데이터베이스에 대한 포스트 그레스 데이터베이스 사용자 만들기

    $ createuser f3
    Shall the new role be a superuser? (y/n) n
    Shall the new role be allowed to create databases? (y/n) y
    Shall the new role be allowed to create more new roles? (y/n) y
    

    편집 - 업데이트 명령은 아래 - 대신 이것을 사용

    $ createuser f3 -d -s
    

    필요한 데이터베이스 만들기

    $ createdb -Of3 -Eutf8 f3_development
    $ createdb -Of3 -Eutf8 f3_test
    

    Gemfile 업데이트

    gem 'sqlite3'
    gem 'pg'
    gem 'taps'
    $ bundle
    

    업데이트 database.yml을

    #development:
    #  adapter: sqlite3
    #  database: db/development.sqlite3
    #  pool: 5
    #  timeout: 5000
    
    development:
      adapter: postgresql
      encoding: unicode
      database: f3_development
      pool: 5
      username: f3
      password:
    
    #test:
    #  adapter: sqlite3
    #  database: db/test.sqlite3
    #  pool: 5
    #  timeout: 5000
    
    test:
      adapter: postgresql
      encoding: unicode
      database: f3_test
      pool: 5
      username: f3
      password:
    

    SQLite는 데이터베이스에있는 탭 서버를 시작합니다

    $ taps server sqlite://db/development.sqlite3 user password
    

    데이터 마이그레이션

    $ taps pull postgres://f3@localhost/f3_development http://user:password@localhost:5000
    

    레일 웹 서버를 다시 시작합니다

    $ rails s
    

    를 정리 Gemfile

    #gem 'sqlite3'
    gem 'pg'
    #gem 'taps'
    $ bundle
    
  3. ==============================

    3.당신이 Heroku가 이동하고 있기 때문에, 당신은이 작업을 수행 할 탭을 사용할 수 있습니다 :

    당신이 Heroku가 이동하고 있기 때문에, 당신은이 작업을 수행 할 탭을 사용할 수 있습니다 :

    heroku db:push
    

    이것은 생산 지역 개발 sqlite가 데이터를 밀어 것이며, Heroku가는 자동적으로 당신을 위해 포스트 그레스로 변환됩니다.

    이것은 또한 Heroku가에 생산 SQLite는 DB를 밀어 작동해야하지만, 테스트 아니에요.

    RAILS_ENV=production heroku db:push
    
  4. ==============================

    4.또한, '페이지'레일의 현재 포스트 그레스 보석 인 당신의 gemfile에 '보석'페이지 ' "라인을 추가해야합니다.

    또한, '페이지'레일의 현재 포스트 그레스 보석 인 당신의 gemfile에 '보석'페이지 ' "라인을 추가해야합니다.

  5. ==============================

    5.간단히 설정 / database.yml을 파일을 업데이트 :

    간단히 설정 / database.yml을 파일을 업데이트 :

    default: &default
      adapter: postgresql
      encoding: unicode
      pool: 5
    
    development:
      <<: *default
      database: projectname_development
    
    test:
      <<: *default
      database: projectname_test
    
    production:
      <<: *default
      database: projectname_production
      username: 
      password: 
    

    실행할 때 위의 생성 무슨이다 :

    $ rails new projectname --database=postgresql --skip-test-unit
    

    또한 당신의 Gemfile이 추가 :

    gem 'pg'
    
  6. ==============================

    6.gemfile에 보석 페이지와 보석 'sqlite3를 교체 한 후, 나는 업데이트 gemfile를 저지하는 것을 잊었다 때문에 Heroku가 마스터에 밀어 때 sqlite3를 오류를 받고 있었다. 간단히 다음은이 문제를 해결하기 :

    gemfile에 보석 페이지와 보석 'sqlite3를 교체 한 후, 나는 업데이트 gemfile를 저지하는 것을 잊었다 때문에 Heroku가 마스터에 밀어 때 sqlite3를 오류를 받고 있었다. 간단히 다음은이 문제를 해결하기 :

    git add .
    git commit -m 'heroku push'
    heroku create 
    git push heroku master
    
  7. ==============================

    7.그냥 database.yml을 업데이트

    그냥 database.yml을 업데이트

    development: &development
      adapter: postgresql
      database: Your_database_name
      username: user_name
      password: password
      host:     localhost
      schema_search_path: public
      min_messages: warning
    
    test:
      <<: *development
      database: test_database_name
    
    production:
      <<: *development
      database: production_db_name
    

    우리는 또 다시 동일한 코드를 반복하지 않도록 위의 코드에 .. 우리는 레일을 사용하고 기본적인 기준은 DRY, 구성 등을 통해 협약과 같은 추적해야한다.

  8. ==============================

    8.그것은 내 위에 언급 된,하지만 나는 그것을 찬성 투표 할 수 럴커로 충분한 명성을 필요가 없습니다. 이 대답을 읽는 레일 초보자를위한 좀 더 관심을 그리기의 희망에서 :

    그것은 내 위에 언급 된,하지만 나는 그것을 찬성 투표 할 수 럴커로 충분한 명성을 필요가 없습니다. 이 대답을 읽는 레일 초보자를위한 좀 더 관심을 그리기의 희망에서 :

    ^^^이 포스트 그레스에 레일 응용 프로그램을 마이그레이션 할 선택한 답변에 설명 된 database.yml을 파일에 추가하여 중요한 부분이다.

  9. ==============================

    9.지금은 명령을 쉽게 될

    지금은 명령을 쉽게 될

    bin/rails db:system:change --to=postgresql
    

    당신이 의심이 있다면 당신은 여기에서 확인하실 수 있습니다

    https://github.com/rails/rails/pull/34832
    
  10. ==============================

    10.이것은 내가 내 설정을하는 방법입니다. 당신은 단지 MRI하지 JRuby를를 사용하는 경우 어댑터 설정에서 논리를 건너 뛸 수 있습니다.

    이것은 내가 내 설정을하는 방법입니다. 당신은 단지 MRI하지 JRuby를를 사용하는 경우 어댑터 설정에서 논리를 건너 뛸 수 있습니다.

    defaults: &defaults
      adapter: <%= RUBY_ENGINE == 'ruby' ? 'postgresql' : 'jdbcpostgresql' %>
      encoding: unicode
      pool: 5
      timeout: 5000
    
    development:
      database: project_development
      <<: *defaults
    
    test:
      database: project_test
      <<: *defaults
    
    production:
      database: project_production
      <<: *defaults
    
  11. ==============================

    11.당신은 다음과 같은 시도 할 수 있습니다 : sqlite3를 development.db .dump | psql의 DBNAME 사용자 이름

    당신은 다음과 같은 시도 할 수 있습니다 : sqlite3를 development.db .dump | psql의 DBNAME 사용자 이름

    또는 sqlitetopgscript으로 시도 : http://trac-hacks.org/browser/sqlitetopgscript/0.10/sqlite2pg

  12. ==============================

    12.가능한 솔루션 (안에게 Heroku에 대한)가에서 yaml.db을 사용할 수있다 :

    가능한 솔루션 (안에게 Heroku에 대한)가에서 yaml.db을 사용할 수있다 :

    http://www.railslodge.com/plugins/830-yaml-db

  13. ==============================

    13.오늘은 동일한 문제가 있었다. 나는 레일 4.2.8에서 일하고 있어요. 이 솔루션은 내 경우, 0.18.4에서 페이지 보석 버전을 지정했다.

    오늘은 동일한 문제가 있었다. 나는 레일 4.2.8에서 일하고 있어요. 이 솔루션은 내 경우, 0.18.4에서 페이지 보석 버전을 지정했다.

  14. from https://stackoverflow.com/questions/6710654/change-from-sqlite-to-postgresql-in-a-fresh-rails-project by cc-by-sa and MIT license