1

기본 정보루비 - mysql2 데이터베이스

에 연결하는 데 문제는 내가 레일 응용 프로그램을 dotcloud.com에서 호스팅 MySQL 데이터베이스에 연결되는있습니다. 아래는

production: adapter: mysql2 host: <host> port: <port> database: <database_name> username: <username> password: <password> 

잘 작동 여기까지

, 내가 에서 데이터베이스의 레코드에 액세스 쿼리와 물건을 할 수있는, 내 database.yml을 파일처럼 보이는 방법이다.

는 지금은 다른 레일 와 동일한 데이터베이스에 연결해야 응용 프로그램 B, 그래서 나는 단순히 B의 database.yml을 파일로 위의 동일한 내용을 복사하여 붙여 넣습니다. 그러나 제작시 레일 콘솔에 들어가려고하면 데이터베이스에 액세스 할 수없는 것처럼 보입니다. 예를 들어 사용자 표가있는 경우 NameError: uninitialized constant User이라고 표시됩니다.

이것은 액세스 제어 문제입니까? 이 문제를 디버깅하려면 어떻게해야합니까?

모든 조언을 이해하십시오.


업데이트

그래서 나는 복사 에서B에 .rb 및 스키마 파일을 붙여 넣습니다. 그러나 레일 콘솔에서 데이터베이스에 액세스하려고하면 uninitialized constant ActiveRecord (NameError)이 표시됩니다. 누구나 어떻게 알아?

+0

응용 프로그램이 동일한 서버에 호스팅되어 있습니까? 그렇지 않으면 호스트 이름이나 mysql 액세스에 차이가있을 수 있습니다. 예를 들어 프로덕션 시스템에서 localhost 호스트를 사용하면 mysql 서버가 동일한 서버에 있음을 나타냅니다. 그러나 연결 세부 정보를 복사하고 다른 서버에서 사용하면 다른 데이터베이스 서버에 연결할 수 있습니다. –

+0

위에서 언급 한 연결 정보를 복사했습니다. 그래서 나는 그것이 서버에 관계없이 지정된 데이터베이스에 연결해야한다고 생각하니? A와 B 모두 Dotcloud에서 호스팅됩니다. –

+0

@ JohnLee 응용 프로그램이로드 될 때 environment.json 또는 environment.yml에서 데이터베이스 자격 증명을 받고 있습니까? 아니면 database.yml에서 해당 값을 하드 코딩하고 있습니까? –

답변

1

나는 새로운 레일 앱을 만들었고 모든 것을 다시 설정했다. 동일한 database.yml 설정을 복사 한 다음 rake db : migrate를 실행 한 다음 필요한 모델 파일을 포함하고 레일 콘솔에 들어가서 지금 작동합니다.

:)

0

앱 B에 대한 이전을 실행 했습니까? 물론 데이터베이스는 이미 설정되어 있지만 App B에는 스키마 복사본이 없습니다. 그래서, 당신은 사용하여 테이블을 나열하는

0

시도를 앱 B에서 마이그레이션을 실행하거나 응용 프로그램 B에 응용 A로부터 스키마를 복사 할 수 있습니다 : 당신이 적어도 얻을 수있는 경우에 표시해야합니다

ActiveRecord::Base.connection.tables 

데이터베이스를 올바르게.

+0

훌륭한 디버그 팁을 보내 주셔서 감사합니다! 그것은 나를 도왔다. "ActiveRecord :: Base.connection.select_all ('SHOW TABLES')"를 사용하고 있었는데, Rails 3.1로 업그레이드 한 이후에 오류가 발생하지 않았습니다. – Jason

+0

제이슨 - 기꺼이 도와 드릴 수있었습니다. 내 대답이 공헌했다면, 적절하다고 느낀다면 적절한 대답을 줄 것입니다. –