0

テーブルの 1 つで追跡できない奇妙な動作が発生しています。更新を実行しようとするたびに、不明な列エラーが発生します

実行しようとすると:

UPDATE `bakerevents` SET `score`=300 WHERE `id`=2910;

次のエラーが表示されます。

「フィールド リスト」の不明な列「bakerevents.id」

この ID で選択を実行すると、エラーは発生せず、行が返されます。

SELECT * FROM `bakerevents` WHERE `id`=2910;
{
    "data":
    [
        {
            "id": 2910,
            "match_id": 1404,
            "game_number": 2,
            "school_id": 3,
            "score": 162,
            "result": 1,
            "updated_at": "2014-12-20 05:31:13",
            "create_user_id": 24,
            "update_user_id": 0,
            "created_at": "0000-00-00 00:00:00"
        }
    ]
}

データベース作成テーブルの構文については、以下を参照してください。

CREATE TABLE `bakerevents` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `match_id` int(11) NOT NULL,
  `game_number` int(11) NOT NULL,
  `school_id` int(11) NOT NULL,
  `score` int(11) NOT NULL DEFAULT '0',
  `result` decimal(11,1) NOT NULL COMMENT '1=Win 0=Loss',
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `create_user_id` int(11) NOT NULL DEFAULT '0',
  `update_user_id` int(11) NOT NULL DEFAULT '0',
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7251 DEFAULT CHARSET=latin1;

エラーの原因について何か考えはありますか?

4

2 に答える 2

1

今朝、やっとこれを追跡することができました。このテーブルに古い投稿更新トリガーがあり、それが問題の原因でした。トリガーが正常に完了せず、それが問題の原因でした。トリガーを削除すると、更新はエラーなしで完了しました。今後これが発生する場合は、必ずトリガーを確認してください。

于 2016-04-07T11:33:56.240 に答える
0

テーブル名と列名の両方が含まれているため、エラーは奇妙です。このバージョンでは次のエラーが予想されます。

UPDATE `bakerevents`
    SET `score` = 300
    WHERE `bakerevents.id` = 2910;

名前をエスケープする必要はありません。したがって、バッククォートなしで試してください:

UPDATE bakerevents
    SET score = 300
    WHERE id = 2910;
于 2016-04-07T01:27:04.600 に答える