外部キー制約のあるテーブルにレコードを挿入するにはどうすればよいですか?
mysql で 2 つのテーブルを作成しました
mysql>describe room;
+----------+----------+------ +-- ---+--------+------+
| 追加キー |
+----- --- +----------+------+-----+----------+----------+
| | 文字 (20) | |
| 文字 (20) | --+------+-----+-----------+----------+
セット内の 2 行 (0.07 秒)
単語リストは
mysql>describe guahao;
+------+----------+------+-----+ - --------+------+
| デフォルト |
+------+---- -----+------+-----+-----------+------+
| 文字 (20) | | NULL | 文字 (10) | 文字 (20) | | MUL | |
+-----+----------+-----+-----+------ -- -+------+
セット内の 4 行 (0.00 秒)
外部キーはルームで、削除カスケード、更新カスケード
コマンドラインで尋ねました。ワードテーブルにデータを挿入するのは問題ありません。結果は
insert into guahao
-> ('Xiao Zhang', ' Male', ' Dermatology');クエリ OK 、1 行が影響を受けました (0.04 秒)
mysql> select * from guahao;
+--------+-----+-----+-- -- -------+
| 性別 | 部屋 |
+-----+-----+--- -- ------+
| 内科
| 脳科 | 🎜 | 女性 | 整形外科 | 22 | 李思 | 🎜>+----------+-----+-----+----------+
セット内の 9 行 (0.00 秒)
しかし、PHP を使用すると、同じ挿入ステートメントでエラーが報告されます。エラー メッセージは次のとおりです。
子行を追加または更新できません: 外部キー制約が失敗します (`clinic`., CONSTRAINT `#sql-9e_13_ibfk_1)。 ` FOREIGN KEY (`room`) REFERENCES `room` (`name`) ON DELETE CASCADE ON UPDATE CASCADE)
問題が何であるかを見つけるのを手伝ってください。ひざまずいて懇願してください!一度泣きながら聞いてみましたが解決しませんでした。
-----解決策---------
文字セットの問題!
1. テーブルの文字タイプ フィールドに文字セットが設定されていません (デフォルトは latin1)
2. データベースに接続した後に文字セットを宣言しませんでした (set names コマンドがありません)
3. utf-8 文字セットを使用しているとのことですが、プログラムには charset=GB18030 があります
実際には gbk 文字セットを使用しています
GB18030 は公式の国家標準であり、まだ実装されていませんコンピューター。したがって、実際に使用されるのはそのサブセット、GBK
です。