我正在尝试插入一些从csv导出到数据库的盲值。在此过程中,它是插入任何我提供的,甚至没有给我任何警告。
例句:我的表结构如下所示
# column-name type
-- --- ----
1 id int(11)
2 name varchar(32)
3 bool tinyint(1)插入查询:
INSERT INTO `table_name` (`id`, `name`, `bool`) VALUES ('a', '11111', 'abced');当我试图运行上面的查询时,它确实会插入一行,但会弹出一个警告。我找到了一个解决办法,我明白这不是正确的方法。
我的尝试
INSERT INTO `table_name` (`id`, `name`, `bool`) VALUES ('a', '11111', 'abced');php
$warningCount = count fetched after executing the query "SELECT @@warning_count"
if($WarningCount > 0){ DELETE THE ROW INSERTED and ECHO error Message}发布于 2013-11-05 14:16:46
尝试将SQL模式设置为STRICT_ALL_TABLES。
mysql> set @@session.sql_mode = STRICT_ALL_TABLES;
Query OK, 0 rows affected (0.00 sec)
mysql> create table t14 (id integer, name varchar(32), bool tinyint(1));
Query OK, 0 rows affected (0.05 sec)
mysql> insert into t14 set id=1, name="test", bool="bla";
ERROR 1366 (HY000): Incorrect integer value: 'bla' for column 'bool' at row 1MySQL 文档声明:
为所有存储引擎启用严格模式。拒绝无效的数据值。以下是更多细节。 严格模式控制MySQL如何处理数据更改语句(如INSERT或UPDATE )中无效或缺失的值。由于几个原因,值可能无效。例如,它可能具有列的错误数据类型,或者它可能超出了范围。
然后插入事务。失败的insert查询不会被计算在内。请记住,在“全部或无”规则的意义上,MySQL事务不是完全原子化的。您可以使用一半的语句提交事务,而另一半则失败。
https://stackoverflow.com/questions/19790694
复制相似问题