玛丽亚数据库版本:10.6.4-MariaDB-1:10.6.4+maria~focal
SQL:
insert ignore into `step` (is_draft, created_by) values ('1', 2);
收到警告:
MariaDB [kite]> show warnings\G
*************************** 1. row ***************************
Level: Warning
Code: 1364
Message: Field 'course_id' doesn't have a default value
*************************** 2. row ***************************
Level: Warning
Code: 1364
Message: Field 'title' doesn't have a default value
*************************** 3. row ***************************
Level: Warning
Code: 1452
Message: Cannot add or update a child row: a foreign key constraint fails (`kite`.`step`, CONSTRAINT `step_ibfk_1` FOREIGN KEY (`course_id`) REFERENCES `course` (`course_id`) ON DELETE CASCADE ON UPDATE CASCADE)
3 rows in set (0.000 sec)
如果约束失败,我预计会出现错误。事实上,以前是这样,但现在不是了。如何启用错误而不是警告?
在 Google 上搜索 SQL_MODE 并尝试了不同的组合,但没有成功:
MariaDB [kite]> SELECT @@SQL_MODE, @@GLOBAL.SQL_MODE\G
*************************** 1. row ***************************
@@SQL_MODE: STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
@@GLOBAL.SQL_MODE: STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
提前致谢!
更新:看起来问题出在ignore
关键词。如果我删除 - 它会按预期工作。