2010-04-25 1 views
0

아래 문제를 해결하는 데 도움이 필요합니다. 내 애플 그래서이 트랜잭션 블록을 제거하는 그들에 의해 권고 된 Heroku가 배포 된은 레일에 고유 키를 수정하는 데 도움이 필요합니다. 레일이 ID를 추가하여 중복 키를 발생했습니다.

@sqlcontact = "INSERT INTO contacts (id,\"cid\", \"hphone\", mphone, provider, cemail, email, sms , mail, phone) VALUES ('"[email protected]+"','" + @id1 + "', '"+ params[:hphone] + "', '"+params[:mphone]+ "', '" + params[:provider] + "', '" + params[:cemail]+ "', '" +  @varemail+ "', '"[email protected]+ "', '"+ @varmail+"', '"[email protected]+"')" 

: 나는 아래처럼 내 레일 코드에서 트랜잭션 블록을했다. 위의 내용을 다음과 같이 변경했습니다.

@cont = Contact.new(:id => @id1, :cid => @id1, :hphone => params[:hphone], :mphone => params[:mphone], :provider => params[:provider], :cemail => params[:cemail], :email => @varemail, :sms => @varsms, :mail => @varmail, :phone => @varphone) 
@cont.save 

내 앱에 이미 데이터가 저장되어 있습니다. 점에서, 그러나 ...

duplicate key value violates unique constraint "contacts_pkey"

이 오류는 데이터를 삽입하려고 SQL 쿼리를 보여줍니다

이제 문제는 내가 기록을 저장하려고하면 ... 나는 오류가 계속이다 SQL 쿼리 i id 값이 표시되지 않습니다. 내 코드에서 볼 수 있듯이 ID를 전달하고 있습니다. 그렇다면 왜 레일은 그것을 받아들이지 않습니까? 항상 자체 ID를 포함합니까? 기본 레일 마법을 덮어 쓸 수 있습니까? 그리고 만약 그렇다면 ... 이미 DB에있는 데이터를 보지 않습니까 ??

나는 정말로 여기에 갇혀있다. 어떻게해야합니까? 방금 트랜잭션 블록으로 돌아 가야합니까

답변

0

당신은 : id를 수동으로 할당합니다. 수동으로하지 않아야합니다. 데이터베이스 관리자가이를 수행 할 것입니다.

관련 문제