2012-10-28 5 views
1

마침내 MySQL 데이터베이스를 반일 동안 Rails 3.2 앱에 연결했습니다.레일스는 MySQL 데이터베이스의 위치를 ​​어떻게 알 수 있습니까?

레일스가 데이터베이스를 어디에서 찾을 수 있는지는 잘 모르겠지만 어떻게해야합니까? 이 응용 프로그램에 포함 된 사용자들은 그것을가 database.yml (db/devlopment.sqlite3)의 경로를 지정의 문제, 그래서 기본으로

는 충분히 쉽게 sqlite3를.

그러나 MySQL 인 경우 MySQL 명령 줄에서 만든 데이터베이스의 경로를 지정해야한다고 생각했습니다. 내가해야 할 일은 데이터베이스 이름과 사용자 로그인 자격 증명을주는 것뿐입니다.

그래서 레일스에서 ​​마이 그 레이션을 실행할 때 데이터베이스의 위치를 ​​어떻게 알 수 있습니까?

답변

1

에서 제공

mysql://localhost:3306/DB_NAME?user=YOUR_USER_NAME&password=YOUR_PASSWORD 

같은 그래서 그것은 단지 DB_NAME을 필요로 당신의 로컬 데이터베이스의 URL, YOUR_USER_NAME & _ 암호, 그것을 발견 믿는다 적당한 기본값. 당신의 database.yml 파일에서 봐,이 같은 라인을 찾을 수 있습니다 : 즉 명시 적으로이 아니라면,

socket = socket: /tmp/mysql.sock 

AFAIK를, 그것은 다른 매개 변수의 부재에서 기본값으로 사용됩니다 (예 : hostport 등) .

+1

Thilo가 맞습니다. http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/MysqlAdapter.html에서 소스를 확인하면 –

+0

좋아, 나는'database.yml' 파일에 소켓 매개 변수를 설정하지 않았지만, 호스트를 127.0.0.1로 설정하고 & 나는 돈을 가지고 있지 않다. 심지어 그것을 가질 필요가 없습니다. – johnmc321

0

나는 그것이라고 당신의 database.yml

1

실제로 레일스는 그것에 대해 아무것도 모릅니다. 데이터베이스 연결을 처리하는 모듈은 활성 레코드에서 사용되는 어댑터입니다. Rails는 database.yml 파일의 경우 모든 데이터베이스 가능성에 대해 "공통"이되도록 일종의 "구성 규칙"만을 제공하지만 내부적으로이 정보를 사용하여 고유 한 프로토콜로 각 데이터베이스 연결을 설정합니다. 나는 SQLite는 모르는,하지만 MySQL과 mysql2 핸들러

여기

https://github.com/brianmario/mysql2

당신이 인터페이스 레일을 체크 아웃 할 수는/액티브는 MySQL의 연결 설정에 사용하는 레일 팀 프로그램와 유지되지 않습니다.

그래서 요약하면 Rails는 알지 못합니다. database.yml에서 설정 한 정보 만 있으면 사용해야하는 어댑터 (database.yml로 이동하면 "adapter : mysql2"또는 "adapter :"sqlite "와 같은 것을 볼 수 있습니다)와 필요한 정보 @pjam이 설명했듯이, mysql 서비스에 외부 적으로 액세스하는 데 사용되는 프로토콜은 mysql : // localhost : 3306/DB_NAME? user = YOUR_USER_NAME & password = YOUR_PASSWORD 패턴으로 표현되며 실제로 어댑터가 설정하는 방법입니다. 연결이 끝났습니다. 레일스에서는 완료하지 않았습니다.

관련 문제