레일 3 (3.0.7) 프로젝트 PostgreSQL 데이터베이스로 사용하기 위해 윈도우 7에 포스트 그레스를 설치하기위한 접근 방법.
서문
그래서 제일 먼저 지적 할 것은 포스트 그레스는 .sqlite3에서 단지 다른 파일 확장자되지 않는 것입니다 (이 비트를 건너 뛸 수 있습니다), 그것은 전체 메커니즘은 데이터베이스를 관리하기위한의 . 따라서 클라이언트/서버 모델을 가지고 있습니다.이 중 하나는 Postgres를 레일즈 애플리케이션의 데이터베이스로 사용하도록 설정해야합니다.
거의 힘들이지 않은 sqlite 설정에 비해 Postgres 설정이 상당히 어려워졌습니다. Heroku에 배포하는 경우 현재 Postgres를 사용하고 있으므로 sqlite3에서 SQL 호출 중 일부가 Postgres와 함께 사용되면 중단됩니다 . Postgres를 Heroku 서버에있을 때보 다 로컬에서 디버그하는 것이 훨씬 쉽습니다.
그래서 나는 다음과 같은 일을했습니다 : (면책 조항 : 내가했던 일 중 일부를 포함하는 것을 잊어 버렸을 것입니다 ... 48 시간 동안 통증이 가해져서 작동하도록했습니다 ... if 다음 조언은 당신을 위해 거대한 (2300 페이지 !!) 그러나 very thorough Postgres documentation 도움이 될 것입니다. 어쨌든 나는 당신이 Postgres를 사용하는 것에 대해서 심각하게 생각한다면,). (두 번째 면책 조항 : 필자는 20 가지의 현명한 포스트그레스 가이드 라인을 거의 틀어 쥐고 포스트 그레스 데이터베이스에 보안 구멍을 노출 시켰습니다. 경험있는 포스트그레스 사용자가 동의하지 않는 명백한 것들이 있다면, 저의 게시물)
.Step 1. 다운로드 나는 암호로 모든 기본 옵션 그냥 사용 '비밀'을 유지에만 9.0.x는 윈도우 7에서 지원 될 것이라고 말했다 herehere 때문에에서 PostgreSQL의 v9.0.4-1 설치 Postgres 설치 프로그램이 메시지를 표시 할 때 (인터넷에서 해당 정보를 공유하면 어떤 결과가 나올지 확실하지 않습니다 ...) 곧 알게 될 것입니다. 당신은 경로 (for system, not user (이 상당한인지 아닌지 잘 모르겠어요))가되도록 3.
.Step 2 변경 환경 변수 단계에서이 암호가 필요합니다 C:\Program Files\PostgreSQL\9.0\bin
(브라 반트 I을 따라서 64 비트 윈도우에서 'C : \ Program Files (x86) \ PostgreS ...'에 32 비트 용으로 설치되지 않습니다.)
PostgreSQL \ 9.0 폴더에 대한 액세스 권한을 변경하는 것을 잊지 마십시오 폴더 또는 컨텐트에 대한 기본 읽기 전용 권한을 제거하십시오. (이 기능을 사용하려면 컴퓨터를 다시 시작해야 할 수도 있습니다. 덕분에 @Gavin- 가능성은 낮습니다). 새 데이터베이스를 만들려고하여
.Step 3 테스트 포스트 그레스 설치 : 명령 줄에서 : createdb -U postgres mydb_as_postgres
. 먼저 암호를 입력하라는 메시지가 나타납니다. 서버를 먼저 시작해야 할 필요가 없을 수도 있습니다 (이 작업을 수행해야하는지 여부를 기억하지 못합니다). 가장 쉬운 방법은 pgAdmin III를 이용하는 것입니다.이 프로그램은 C:\Program Files\PostgreSQL\9.0\bin
과 같은 폴더에 'pgAdmin3.exe'가 있어야합니다. pgAdmin III를 시작하면 왼쪽에 '개체 브라우저'라는 패널이 있어야합니다.
서버 그룹> 서버> PostgreSQL의 9이에서를 가진 나무가 있어야한다.0 (로컬 호스트 : 5432)
'PostgreSQL 9.0 (localhost : 5432)'을 마우스 오른쪽 버튼으로 클릭하고 '연결'을 선택하십시오.
createdb -U postgres mydb_as_postgres
명령은 pgAdmin III를 시작하고 'PostgreSQL 9.0 (localhost : 5432)'을 두 번 클릭하여 확인할 수있는 'mydb_as_postgres'라는 새 데이터베이스를 만들어야합니다. 이 아래가 있어야한다 :
Databases (2)
2 데이터베이스 명령의 -U postgres
부분은 소유자의 같이 포스트 그레스의 사용자로 데이터베이스를 생성하는 포스트 그레스를 알려주기 때문에 내가 _as_postgres
그것을라는 mydb_as_postgres
및 postgres
라고 기재해야하는 어떤 postgres 사용자로 로그인하지 않았을 때를 지정해야합니다. 나는 'AJames'사용자로 저장된 모든 파일을 보유하고 있지만, 동일하고 다른 사용자로 로그인 할 때 앱을 계속 개발하려면 해당 사용자를 위해 Postgres '역할'을 만들어야합니다 (단계 4).
. 단계 4 through pgAdmin III.
개체 브라우저> 서버 그룹> 서버> (로컬 호스트 : 5432) PostgreSQL의 9.0 : (에 나를 위해하는) 로그인 역할을 마우스 오른쪽 단추로 클릭> 로그인 역할
마우스 오른쪽 단추로 클릭하고 로그인 역할을하고 '새로운 로그인 역할 ... ' 역할 이름에 나를 위해 AJames, 귀하의 운영 체제 사용자 이름을 넣고'역할 권한 '탭에서 암호를 기입, 모든 상자를 선택하지만, 경험이 포스트그레스 사용자 '부모 역할에서 권한 상속'및 '데이터베이스 객체 생성 가능'을 확인하는 것이 좋습니다.하지만 숙련 된 사용자가 아니며 Postgres에서 Rails SQL 호출을 디버그하여 '수퍼 유저'및 '역할을 만들 수 있습니다.'
. 단계 5 이제 postgres 사용자로 로그인하지 않고 새 데이터베이스를 만들 수 있습니다. 입력하십시오 :
createdb mydb_as_user
는 희망이 당신을 위해 작동합니다.
. 단계 6. 그래, 당신은 'db /'디렉토리에 development.sqlite3 파일을 가지고 있습니다. 처음에는 다음 테스트를 sqlite3에서 psql로 변환하는 것으로 설정하려고했습니다.
이 작업을 수행 할 수 없었지만 Heroku.com의 Rails 응용 프로그램에서 필요한 데이터를 필요로하는 솔루션으로 여기에 시도해 보았습니다 (7 단계 이후의 솔루션 참조). Heroku에 로컬 앱만 있고 데이터가없는 사용자는 동일한 접근 방식을 사용할 수 없으므로 다음과 같은 것을 탐색해야 할 수 있습니다.
x6.1 먼저 명령을 시도하여 'psql'을 테스트하십시오. 같은 명령 줄에서 :
psql mydb_as_user
이 다음과 같이 표시되어야합니다 (사용자가 비밀번호를 입력 후) :
C:>psql mydb_as_user
Password:
psql (9.0.4)
WARNING: Console code page (850) differs from Windows code page (1252)
8-bit characters might not work correctly. See psql reference
page "Notes for Windows users" for details.
Type "help" for help.
mydb5=#
X6.이 시도 유입은 :
CREATE TABLE users_table (id integer, "name" text);
이 표시되어야합니다 :
개체 브라우저> 서버 그룹> 서버 : 당신이 pgAdmin III에 체크하면
CREATE TABLE
mydb5=#
, 당신은 아래에이 표를 참조한다 > PostgreSQL 9.0 (로컬 호스트 : 5432)> 데이터베이스> mydb_as_user> 스키마> 공개> 테이블> users_table>
x6.3 좋아, t 다음 변환하십시오. Downloaded sqlite-shell Windows 용 사전 컴파일 된 바이너리.
x6.4 새 디렉토리를 만들고 'C : \ temp'를 사용하고 sqlite3.exe와 development.sqlite3 파일을 넣습니다.
x6.5 다음 명령 (here)을 사용하여 development.sqlite3 데이터베이스를 Postgres로 덤프하십시오. 내가 pgAdmin III에 가서 개발이 데이터베이스를 만들어, 명령을 다시 시도하고 있어요 그래서
psql: FATAL: database "development2" does not exist
x6.6 : 당신과 같은 오류를 얻을 수 있습니다
sqlite3 development .dump | psql development2
ERROR: syntax error at or near "PRAGMA"
LINE 1: PRAGMA foreign_keys=OFF;
^
BEGIN
COMMIT
내가 말했듯이, 나는 그것을 작동시키지 못했습니다. 그 오류를 해결하는 방법이 있다고 확신하지만 다른 방법을 생각하고 그래서 대신이 솔루션을 사용합니다. (Heroku 계정에 데이터가 있어야하며 탭을 사용하여 psql로 변환합니다 (나는) :
.step 7. 다른 데이터베이스를 만들었습니다. 속성 탭에서 이름을 'development'로 설정하고 소유자는 'AJames'로 변경했습니다 (Windows 사용자 이름으로 바꾸십시오). 권한 탭, 역할 설정 : '대중'과 (그래서 나는 그 필요 확실하지 않아요이 선택 해제로 재설정 생각)에 모든 옵션을 선택
.Step 8이 를 추가합니다. 10 을 gem 파일에 추가하십시오. 이 시점에서도 gem 'sqlite3'
도 삭제하고 싶을 것입니다.
.Step 9 설정 database.yml을 같은 suggested here에 :
development:
adapter: postgresql
database: db/development
username: AJames # replace this with your own user name
password: secret # replace this with your own password
host: localhost
encoding: UTF8
pool: 5
timeout: 5000
당신이 오픈 소스 프로젝트에서 작업하면 암호가 공개 될하지 않으려는 경우는 봐 어떤은의 응답에 Securely providing the database password in a Rails app. 당신의 레일 응용 프로그램의 루트 디렉토리의 실행에서 명령 줄에서
.Step 10 : rake db:migrate
이 새로운 스키마와 포스트 그레스 데이터베이스의 모든 테이블을 생성합니다.
. 단계 11. 명령 줄에서 heroku db:pull
을 실행하여 (다시 레일즈 응용 프로그램의 루트 디렉토리에서) 모든 데이터를 새로운 빈 Postgres 데이터베이스로 가져옵니다. 나는이 시점에서 당신의 도청 보석이 당신을 위해이 일을 할 것이라고 생각합니다.
.Step 12 바라건대 단차 (12)가없는! ... 이제 당신을 위해 일해야합니다. 행복한 RoR PostgreSQL 디버깅! 이 오류가 있으면 편집하거나 알려주십시오. 그들이 이 필요할 왜, 어떻게 등을 변경하는 에 대한하는지, 이것은 blog post about Postgres passwords입니다
일을 내가 명령 레일에 루비를 위해 이것을 사용
로 변경해야 : //postgrespro.com/windows, 다른 모든 설정 - 일반적인 방법. – prograils