2011-12-03 2 views
0

갑자기 모든 모델을 레일스의 PostgreSQL 데이터베이스에 저장할 수 없습니다. 데이터를 검색하는 것이 좋습니다.레일즈에서 PostgreSQL 데이터베이스에 모델을 저장할 수없는 이유는 무엇입니까?

m = Model.find(1) 
m.save 
=> false 

다른 데이터베이스로 전환해도 문제가 없습니다. Rails 로그에는 항목이 없습니다.

이 문제가 발생할 수있는 이유는 무엇입니까? 데이터베이스가 손상 되었습니까? 디스크가 죽어 가고 있습니까? 재부팅을 시도했지만 도움이되지 않았습니다.

데이터베이스의 무결성을 어떻게 확인할 수 있습니까? (pgAdmin III가 설치되어 있습니까?) 유지 보수를해야합니까? 문제가 무엇인지 알아내는 방법?

우분투 11.04, 레일즈 3.0.7 및 PostgreSQL 8.3에서 작업합니다.

답변

2

해당 개체를 만든 이후에 유효성 검사를 추가 했습니까? 이것을 시도하십시오 :

> m = Model.find(1) 
> m.valid? 
> m.errors.full_messages 

PostgreSQL 데이터베이스에 문제가있는 경우 예외 및 읽기 오류가 발생할 수 있습니다.

+0

이 답변을 찾는데 도움이되었습니다. 늘 그렇듯이 *** 프로그래머 *** 오류였습니다. 오랜 시간 전에 추가 한 유효성 검사는 실패했지만이 객체를 저장하려고 시도한 것은 이번이 처음입니다. –

+0

@BSeven : Rails가 데이터베이스를 이해하지 못한다고해도 CHECK 제약 조건과 FK와 같이 데이터베이스 내부에서 유효성 검사를 수행한다는 좋은 주장을 발견했습니다. 당신은 당연히 그들을 모델로 원할 것입니다. –

1

m.save! 

시도하고 그것은 당신에게 더 많은 정보를 제공해야한다.

+0

너무 효과적입니다. 감사. –

0

데이터베이스가 손상 되었습니까? 디스크가 죽어 가고 있습니까?

그렇다면 3 줄의 루비 코드가 도움이되지 않습니다. 데이터베이스가 작동하는지 여부를 알고 싶다면 데이터베이스를보십시오. PgAdmin이 작동하면 db가 정상입니다. DB에서 쿼리 로깅을 설정하여 Rails가 어떤 쿼리를 보내고 있는지 확인할 수 있습니다.

관련 문제