Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL INSERT INTO跳过列的可空性_Mysql_Sql_Sql Insert - Fatal编程技术网

MySQL INSERT INTO跳过列的可空性

MySQL INSERT INTO跳过列的可空性,mysql,sql,sql-insert,Mysql,Sql,Sql Insert,假设我们将表定义为: CREATE TABLE tab(col VARCHAR(100), col2 INT); 两列都可以为空。 ALTERTABLE选项卡ALTERCOL2列删除默认值已应用于列col2 快速检查: SELECT table_name, column_name, is_nullable FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'tab'; +-------------+--------------+------

假设我们将表定义为:

CREATE TABLE tab(col VARCHAR(100), col2 INT);
两列都可以为空。

ALTERTABLE选项卡ALTERCOL2列删除默认值
已应用于列
col2

快速检查:

SELECT table_name, column_name, is_nullable
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'tab';

+-------------+--------------+-------------+
| TABLE_NAME  | COLUMN_NAME  | IS_NULLABLE |
+-------------+--------------+-------------+
| tab         | col          | YES         |
| tab         | col2         | YES         |
+-------------+--------------+-------------+
两列仍标记为可空

现在如果我表演

INSERT INTO tab(col) VALUES('bar');
我将得到一个错误:

字段“col2”没有默认值

同样的代码适用于PostgreSQL


这是某种错误还是我遗漏了什么?

Doc说:如果列可以将NULL作为值,那么该列将使用显式的默认NULL子句定义。我猜您是从列中获取了该显式默认值。@juergend但如果是这样,那不是意味着存在其他默认值,在这种情况下,我们不应该看到此错误消息吗?看起来像个bug:在我的情况下,我删除了STRICT_TRANS_表并重新启动了MySQL服务,问题就消失了。@RoxanaSh很好的一点: