2013-03-20 3 views
0

ruby를 사용하여 postgresql DB에 액세스하고 업데이트합니다. 업데이트를 시도하고있는 필드 중 하나가 "updated_at"이며 시간대가없는 타임 스탬프 유형입니다. 나는 문을 사용하고 있습니다 :postgresql db에 타임 스탬프 삽입하기

db.prepare('statement1', "INSERT INTO games (game_hash,team1,team2,team1score,team2score,time,update_at) VALUES ($1,$2,$3,$4,$5,$6,$7)"); 
update = Time.now.strftime("%Y-%m-%d %H:%M:%S"); 
db.exec_prepared('statement1', [myId, team1, team1score, team2, team2score, progress, update]); 

업데이트 변수가 나는 원래 타임 스탬프 필드 오류에 대해 올바르게 포맷되지 얻고 있었다으로 올바른 형식,하지만 더 이상 할 수있다. 데이터베이스가 updated_at 필드를 비어 있음을 보여줍니다 !! 다른 모든 필드는 올바르게 채워집니다. 누구든지이 원인을 알고 있습니까?

UPDATE - 내가 대신 내 타임 스탬프가 제대로 데이터베이스에 추가됩니다 해당 열을 사용하여 입력 한 날짜라는 last_update의 새 열을 추가! 데이터베이스가 원래는 레일스 activerecord에서 왔기 때문에/created_at 필드는 어떻게 든 보호됩니다. 이 문제를 해결하는 데 도움을 주신 모든 분들께 감사 드리며, 대신 새 컬럼을 사용하겠습니다.

+0

sql은'created_at' 필드 만 삽입합니다. 'updated_at'이 보이지 않습니다. –

+0

created_at 및 updated_at 모두 시간대가없는 유형의 타임 스탬프입니다. 각 항목에 삽입하려고 시도했는데 둘 다 공백으로 표시됩니다. (성명에서 updated_at를 표시하도록 수정되었습니다) –

+0

그냥 루비입니까, 아니면 Activerecord/울타리? Activerecord는 created_at 및 updated_at를 내부적으로 관리합니다. –

답변

0

간단한 솔루션은이 작업을 수행하는 것입니다

db.prepare('statement1', "INSERT INTO games (game_hash,team1,team2,team1score,team2score,time,update_at) VALUES ($1,$2,$3,$4,$5,$6, now())"); 
db.exec_prepared('statement1', [myId, team1, team1score, team2, team2score, progress]); 

당신에게 코드의 라인, 그리고 잘못 될 수있는 것들의 상당수를 저장합니다.

이제 문제가 해결되지 않으면 트리거를 확인하십시오. 문제가 해결되면 오타, 예약어 등이 될 수도 있습니다. 문제가 해결되지 않으면 insert 문과 행의 저장소 사이의 데이터가 엉망이됩니다.

관련 문제