我正在使用ruby来访问postgresql数据库并进行更新。我尝试更新的其中一个字段称为“updated_at”,其类型为timestamp,不带时区。我正在使用声明:
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的datetime类型的新列,并使用该列代替我的时间戳正确添加到数据库中!我想因为数据库最初来自rails activerecord,update / created_at字段以某种方式受到保护。感谢大家帮忙尝试解决这个问题,我只会使用我的新专栏。
答案 0 :(得分: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]);
为您保存一行代码,以及可能出错的大量内容。
现在,如果没有解决问题,请检查触发器。如果确实解决了问题,可能是拼写错误,保留字等。如果它没有解决问题,那么其他东西就会搞乱插入语句和行存储之间的数据。