[RUBY-ON-RAILS] 신선한 레일 프로젝트에서 SQLite는에서 PostgreSQL을로 변경
RUBY-ON-RAILS신선한 레일 프로젝트에서 SQLite는에서 PostgreSQL을로 변경
나는이의 데이터베이스 SQLite는에 (dev에 생산) 것을 응용 프로그램을 레일있다. 내가 Heroku가 이동하고 있기 때문에, 나는 PostgreSQL을 내 데이터베이스를 변환하고 싶습니다.
나는 그러나, 변경할 필요가 없습니다 어쨌든, 나는, 지역, 개발, 데이터베이스 SQLite는 변경 될 필요가없는 것을 듣고 어떻게 SQLite는에서 PostgreSQL을에 생산 환경을 변경 가야합니까?
누구도이 이전 할 수 있습니다 도움을 수행 했습니까?
추신 나는 확실히 바로이 과정이 소위 아니지만, 내가 PostgreSQL을에 SQLite는에서 데이터베이스를 마이그레이션에 대한 들었어요, 무슨 일을해야한다는 것입니다?
해결법
-
==============================
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.단계는 다음 날 위해 일했습니다. 그것은 탭 보석, 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.당신이 Heroku가 이동하고 있기 때문에, 당신은이 작업을 수행 할 탭을 사용할 수 있습니다 :
당신이 Heroku가 이동하고 있기 때문에, 당신은이 작업을 수행 할 탭을 사용할 수 있습니다 :
heroku db:push
이것은 생산 지역 개발 sqlite가 데이터를 밀어 것이며, Heroku가는 자동적으로 당신을 위해 포스트 그레스로 변환됩니다.
이것은 또한 Heroku가에 생산 SQLite는 DB를 밀어 작동해야하지만, 테스트 아니에요.
RAILS_ENV=production heroku db:push
-
==============================
4.또한, '페이지'레일의 현재 포스트 그레스 보석 인 당신의 gemfile에 '보석'페이지 ' "라인을 추가해야합니다.
또한, '페이지'레일의 현재 포스트 그레스 보석 인 당신의 gemfile에 '보석'페이지 ' "라인을 추가해야합니다.
-
==============================
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.gemfile에 보석 페이지와 보석 'sqlite3를 교체 한 후, 나는 업데이트 gemfile를 저지하는 것을 잊었다 때문에 Heroku가 마스터에 밀어 때 sqlite3를 오류를 받고 있었다. 간단히 다음은이 문제를 해결하기 :
gemfile에 보석 페이지와 보석 'sqlite3를 교체 한 후, 나는 업데이트 gemfile를 저지하는 것을 잊었다 때문에 Heroku가 마스터에 밀어 때 sqlite3를 오류를 받고 있었다. 간단히 다음은이 문제를 해결하기 :
git add . git commit -m 'heroku push' heroku create git push heroku master
-
==============================
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.그것은 내 위에 언급 된,하지만 나는 그것을 찬성 투표 할 수 럴커로 충분한 명성을 필요가 없습니다. 이 대답을 읽는 레일 초보자를위한 좀 더 관심을 그리기의 희망에서 :
그것은 내 위에 언급 된,하지만 나는 그것을 찬성 투표 할 수 럴커로 충분한 명성을 필요가 없습니다. 이 대답을 읽는 레일 초보자를위한 좀 더 관심을 그리기의 희망에서 :
^^^이 포스트 그레스에 레일 응용 프로그램을 마이그레이션 할 선택한 답변에 설명 된 database.yml을 파일에 추가하여 중요한 부분이다.
-
==============================
9.지금은 명령을 쉽게 될
지금은 명령을 쉽게 될
bin/rails db:system:change --to=postgresql
당신이 의심이 있다면 당신은 여기에서 확인하실 수 있습니다
https://github.com/rails/rails/pull/34832
-
==============================
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.당신은 다음과 같은 시도 할 수 있습니다 : sqlite3를 development.db .dump | psql의 DBNAME 사용자 이름
당신은 다음과 같은 시도 할 수 있습니다 : sqlite3를 development.db .dump | psql의 DBNAME 사용자 이름
또는 sqlitetopgscript으로 시도 : http://trac-hacks.org/browser/sqlitetopgscript/0.10/sqlite2pg
-
==============================
12.가능한 솔루션 (안에게 Heroku에 대한)가에서 yaml.db을 사용할 수있다 :
가능한 솔루션 (안에게 Heroku에 대한)가에서 yaml.db을 사용할 수있다 :
http://www.railslodge.com/plugins/830-yaml-db
-
==============================
13.오늘은 동일한 문제가 있었다. 나는 레일 4.2.8에서 일하고 있어요. 이 솔루션은 내 경우, 0.18.4에서 페이지 보석 버전을 지정했다.
오늘은 동일한 문제가 있었다. 나는 레일 4.2.8에서 일하고 있어요. 이 솔루션은 내 경우, 0.18.4에서 페이지 보석 버전을 지정했다.
from https://stackoverflow.com/questions/6710654/change-from-sqlite-to-postgresql-in-a-fresh-rails-project by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 레일에서, 당신은 어떻게 뷰를 사용하여 JSON 렌더링합니까? (0) | 2020.02.09 |
---|---|
[RUBY-ON-RAILS] 다른 컨트롤러 내의 고안 양식 (0) | 2020.02.09 |
[RUBY-ON-RAILS] 루비 온 레일즈. 어떻게이에서 액티브 레코드 .build 방법을 사용하십시오 관계에 속하는? (0) | 2020.02.09 |
[RUBY-ON-RAILS] 하나의 응용 프로그램에 여러 도메인을 처리하기 위해 라우팅 난간 (0) | 2020.02.09 |
[RUBY-ON-RAILS] 레일과 루비 1.9와 잘못된 멀티 바이트 문자 (US-ASCII) (0) | 2020.02.09 |