MySQL8.0 での現象です。
こんな事初めてなので皆目検討がつかず、質問させていただきます。
データベース
MySQL 8.0.23
AUTOCOMMIT設定 (有効になっているはずです)
mysql> select @@autocommit; +--------------+ | @@autocommit | +--------------+ | 1 | +--------------+ 1 row in set (0.00 sec)
発生している症状
「test1」と「review」というテーブルが存在し、どれも同じテーブル構成です。
この2つのテーブルに、同じ値を保存するINSERT文を発行したのですが・・・
- 「test1」テーブルでは、トランザクションを使わなくてもINSERTで保存できる。
- 「review」テーブルでは、特定のキーの場合のみ、トランザクションを開始しないとINSERTで保存できない。(かつエラーなし)
- 「review」テーブルにて特定のキー以外は、トランザクションを使用しなくてもINSERTで保存できる。
- おそらく自分の環境のみ。他人の環境では発生せず。
その特定のキーというのは、主キーとして指定しているカラムに対して、下記の値となります。
systm_no = 1, customer_no = 33
この時のみINSERTしてもエラーとなりません。「customer_no」を違う値にするとINSERTできます。
--- テーブル(reviewテーブルも同じ構成) CREATE TABLE `test1` ( `system_no` bigint unsigned NOT NULL, `customer_no` bigint unsigned NOT NULL, `item_id` varchar(20) NOT NULL, `maker_name` varchar(200) DEFAULT NULL, `item_name` varchar(200) DEFAULT NULL, `title` varchar(200) DEFAULT NULL, `url` varchar(200) DEFAULT NULL, `image_path` varchar(500) DEFAULT NULL, `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, `modified_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `deleted_at` datetime, `henkou_tantou_name` varchar(30) DEFAULT NULL, `edit_tantou_no` bigint unsigned DEFAULT NULL, `synced_at` datetime DEFAULT NULL, PRIMARY KEY (`system_no`,`customer_no`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
実行したINSERT文と結果
-- (1) 主キー「1, 33」でINSERT mysql> insert into review(system_no, customer_no, item_id) values (1, 33, '228'); Query OK, 1 row affected (0.01 sec) -- (1)のSELECT結果 mysql> select * from review; Empty set (0.00 sec) -- (2) 主キー「11, 33」でインサート mysql> insert into review(system_no, customer_no, item_id) values (11, 33, '228'); Query OK, 1 row affected (0.00 sec) -- (2) のSELECT結果 mysql> select * from review; Empty set (0.00 sec) -- (3) 主キー「1, 333」でインサート(customer_noを33から333へ変更) mysql> insert into review(system_no, customer_no, item_id) values (1, 331, '228'); Query OK, 1 row affected (0.01 sec) -- (3) のSELECT結果 mysql> select * from review; +-----------+-------------+---------+------------+-----------+-------+------+------------+---------------------+---------------------+------------+--------------------+----------------+-----------+ | system_no | customer_no | item_id | maker_name | item_name | title | url | image_path | created_at | modified_at | deleted_at | henkou_tantou_name | edit_tantou_no | synced_at | +-----------+-------------+---------+------------+-----------+-------+------+------------+---------------------+---------------------+------------+--------------------+----------------+-----------+ | 1 | 331 | 228 | NULL | NULL | NULL | NULL | NULL | 2022-06-23 10:08:13 | 2022-06-23 10:08:13 | NULL | NULL | NULL | NULL | +-----------+-------------+---------+------------+-----------+-------+------+------------+---------------------+---------------------+------------+--------------------+----------------+-----------+ 1 row in set (0.00 sec)
原因がまったくわからないため、質問させていただきました。
どこか確認する項目などございましたら、ご教示いただけますと助かります。