2011-11-03 2 views
1

우분투에서 Postgres9.1과 함께 Rails 2.3.5 앱을 사용하려고합니다 (Phusion Passenger가있는 Apache2에 배포 됨). 나는 그 테이블이 존재하지 않는 불평에 액세스하려고하면 응용 프로그램이 오류가 발생합니다 :rails SQL 쿼리가 postgres와 함께 실패했지만 psql 명령 줄 도구에서 성공했습니다.

PGError: ERROR: relation "users" does not exist 
LINE 4:    WHERE a.attrelid = '"users"'::regclass 
            ^
:    SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull 
FROM pg_attribute a LEFT JOIN pg_attrdef d 
ON a.attrelid = d.adrelid AND a.attnum = d.adnum 
WHERE a.attrelid = '"users"'::regclass 
AND a.attnum > 0 AND NOT a.attisdropped 
ORDER BY a.attnum 

을 그러나 내가 잘라 psql의 (있는 CmdLine 클라이언트)에서 동일한 쿼리를 붙여 넣을 경우, 그냥 잘 작동합니다. 사용자 테이블도 존재합니다. 나는 rake db : reset과 'rake db : migrate'를 반복해서 시도했지만 도움이되지 않는다.
또한 rails-app에서 ActiveRecord :: Base.connection이 스크립트/콘솔에서 성공했음을 확인했습니다. 이는 database.yml에 구성된 자격 증명을 사용하여 데이터베이스에 대한 연결이 작동 함을 의미합니다.

나는 분실했습니다. 이것을 해결할 수있는 단서가 크게 감사하겠습니다.

+2

내 생각에, 당신은 Rails 내에서 다른 DB에 연결하고 있습니다. –

+0

에드윈과 "a_horse .."에게 감사드립니다. T' 잘못된 DB에 연결되었습니다. 나는 environment.rb를 통해 개발 모드를 위해 앱을 구성했다. 그러나 Phusion 여객 (내가 아파치와 함께 사용하고 있었던)에 의해 나의 설정은 무시되고 있었다. 기본적으로 RailsEnv를 '프로덕션'으로 설정합니다. 이전에 'rake db : create : all'을 사용 했으므로 prod DB가 생성되었지만 rake db : migrate는 개발 DB에만 채워졌습니다. Apache 사이트 구성을 변경하여 RailsEnv 개발을 다음과 같이 설정해야했습니다. http://www.modrails.com/documentation/Users%20guide%20Apache.html#rails_env. – Don

+0

@Don : a_horse_with_no_name은 올바른 말로 돈을 벌었습니다. 그것은 효과가 멋지다. 나는이 신비한 * Edwin * 남자에 대해 궁금해한다. ;) –

답변

1

세 가지 가능한 원인.

1) special cast ::regclasssearch_path의 현재 설정을 고려합니다. users 테이블이 앱에서 쿼리 할 때 search_path에없는 스키마에있을 수 있습니다. search_path은 사용자 또는 세션별로 설정할 수 있습니다.

'myschema.users'::regclass 

2) 대문자 :이 같은 테이블 이름을 스키마-자격에
솔루션이 될 것입니다. 이유가 '"users"'::regclass이고 'users'::regclass이 아닌 이유는 무엇입니까? 이것은 중복됩니다. 테이블 "Users"또는 무엇인가의 실제 이름이며 psql에서 대문자를 사용합니까? (실제로 &을 붙여 넣으면 쿼리가 붙여 질 수 없습니다.)

3) 잘못된 데이터베이스에 연결되었습니다. 포트가 잘못 되었나요? (@a_horse 님의 의견을 참조하십시오.)

+0

에드윈과 "a_horse .."라는 귀하의 답변에 많은 감사를드립니다. T' 잘못된 DB에 연결되었습니다. 나는 environment.rb를 통해 개발 모드를 위해 앱을 구성했다. 그러나 Phusion 여객 (내가 아파치와 함께 사용하고 있었던)에 의해 나의 설정은 무시되고 있었다. 기본적으로 RailsEnv를 '프로덕션'으로 설정합니다. 이전에 'rake db : create : all'을 사용 했으므로 prod DB가 생성되었지만 rake db : migrate는 개발 DB에만 채워졌습니다. Apache 사이트 구성을 변경하여 RailsEnv 개발을 다음과 같이 설정해야했습니다. http://www.modrails.com/documentation/Users%20guide%20Apache.html#rails_env. – Don

관련 문제