2017-05-16 11 views
0

作成と更新の両方の連絡先の共通クエリです。 フィールドのupdationをやっている間: - :1364フィールド「club_id」デフォルト値を持っていないSQLデフォルトのON DUPLICATEによるキーのデフォルト値がONになっています。

contact_tableデフォルトを持つフィールドclub_idを持って 例外が

INSERT INTO contact_table 
SET id = '1234', 
is_stealth_mode = 1 
ON DUPLICATE KEY UPDATE 
id = LAST_INSERT_ID(id), 
is_stealth_mode = VALUES(is_stealth_mode) 
を実行する一般的なエラーが中に発生しました値なしとNULL可能ではない

strict mode is enabled 

contact_table既に値id = '1234' と 'club_id' が= 123

+0

質問を編集して、表示される完全なエラーメッセージを追加してください。また、表のスキーマを追加します。 –

+0

idが自動インクリメント列でないのはなぜですか?主キーはありますか? –

+0

contact_table 'id'はauto_incrementであり、そのフィールド自体が主キーです。 – missgeorge

答えて

0

"contact_tableにはデフォルト値noneとnullableでないフィールドclub_idがあります"

上記のステートメントから、club_idにデフォルト値がないか、デフォルト値が「NONE」であることを意味していますか?それはclub_idがnullableではないと思われ、あなたはその値をクエリに与えるべきです。あなたは、各列を使用して、フィールドの値を更新する場合は既存の値

それとも

id = LAST_INSERT_ID(id), 
is_stealth_mode = VALUES(is_stealth_mode), 
club_id = VALUES(club_id) 

を保つためにON DUPLICATE KEY UPDATE

id = LAST_INSERT_ID(id), 
is_stealth_mode = VALUES(is_stealth_mode), 
club_id = club_id 

にに更新すべきかを指定する必要があります

+0

既存のエントリを更新中にこのエラーが発生しました。 id = '1234'の場合は 'club_id'が既に存在しています – missgeorge

+0

テーブルのDDL構造体と更新しようとしている行の値を1つ指定してください。 – Ram