默认值在 phpmyadmin/mysql 数据库中不起作用

Posted

技术标签:

【中文标题】默认值在 phpmyadmin/mysql 数据库中不起作用【英文标题】:Default values not working in phpmyadmin/mysql database 【发布时间】:2016-01-23 20:07:37 【问题描述】:

我无法让表格接受 "" 或 '' 并使用默认值。它正在插入 NULL 。

我正在直接输入 sql 窗口中尝试这些命令。

INSERT INTO test01 VALUES ("", now(), "");
INSERT INTO test01 VALUES ('', now(), '');

但两者都只是在第三列中给出 NULL。该结构设置为非空,默认值为“yes”。 (不带引号)。

这是结构的屏幕截图。你可以看到 NULL 没有被选中。 http://garryjones.se/extras/so3.png

【问题讨论】:

我不认为那些插入会将 null 放入第三列,因为第三列不能设置为 null。 【参考方案1】:

仅当 no 值被插入/更新时,默认值才有效。如果您将其显式设置为空字符串(NOTNULL 值相同),那么它将在列中以空字符串结束。而不是上面的代码,您应该完全从 INSERT 语句中删除该列:

INSERT INTO test01 (t1, t2) VALUES ('', now())

【讨论】:

我认为第二列也可以跳过,因为更新当前时间戳【参考方案2】:

其他已经解释了原因,我在这里再补充一点,您也在更新时使用当前时间戳,因此也不需要使用此列。

INSERT INTO test01 (t1) VALUES ('')

【讨论】:

谢谢。如果我有 4 列,我想在第 4 列插入一个值,在第 3 列插入一个默认值。 @garry-jones 如果您需要在第四列中自定义值而不是您只需将插入写入表(col4)值('val4');在这种情况下不需要使用其他列。 如果你想插入第二列而不是添加 col2 ... col1 和 col3 自动更新 @garry-jones 谢谢。如果我有 4 列,我想在第 4 列中插入一个值,在第 3 列中插入一个默认值,该怎么办?我试过这个 INSERT INTO test01 VALUES (", now(), ,1); 但它没有用 - 在活动表中有 25 列,用户不会输入一些值,所以我需要那些为“是”或“否”。我想我可以通过使用默认值来控制插入语句。 重新设计数据库,这样您的表就不会包含一堆未使用的列。除此之外,您需要命名要插入的列。如果您希望数据库使用默认值,那么您需要将它们从列列表中排除。停止尝试使用INSERT INTO TABLE VALUES 并使用INSERT INTO TABLE (<column names>) VALUES (...)【参考方案3】:

您可以使用 DEFAULT 关键字:INSERT INTO test01 VALUES ("", now(), DEFAULT);

【讨论】:

以上是关于默认值在 phpmyadmin/mysql 数据库中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

phpmyadmin mysql 数据库托管

Phpmyadmin - Mysql 没有权限

ValueError:无法添加 *:实例在数据库“默认”上,值在数据库“无”上

phpmyadmin,mysql 数据库父级?

在设置表单上设置默认值在 Octobercms 中返回 null

phpmyadmin mysql 服务器选择