实时 MySQL 数据库接受 'CURRENT_TIMESTAMP' 作为日期时间值 - 本地数据库不接受。

26 浏览
0 Comments

实时 MySQL 数据库接受 'CURRENT_TIMESTAMP' 作为日期时间值 - 本地数据库不接受。

我接手了一个几年前的项目,并注意到在许多php调用中使用CURRENT_TIMESTAMP来更新许多行中的datetime字段。这在实际环境中完美运行,但在我的本地设置上却无法运行。

实际数据库和我从WAMP64下载的本地版本都运行在MySQL5.7.19上。

运行涉及插入CURRENT_TIMESTAMP的PHP脚本查询将返回以下错误:

“last_update”时间戳的无效默认值

然而,在实际服务器上,这个操作可以顺利进行。两者都使用MySQLi执行这些插入查询。

我是否遗漏了什么?是否有一些服务器端配置设置可以允许将CURRENT_TIME插入到时间戳字段中?

0
0 Comments

在MySQL数据库中,有一个问题出现了:实时MySQL数据库接受"CURRENT_TIMESTAMP"作为日期时间值,而本地数据库却不接受。

出现这个问题的原因是插入语句中特定的列可能被省略了,因为错误消息显示为"Invalid default value"。

解决这个问题可以参考以下链接:Invalid default value for 'create_date' timestamp field(并阅读这里的有用评论)。

在该链接中,用户提到了一种可能的解决方法,即在创建表时使用显式的默认值。这可以通过将默认值设置为当前日期和时间来实现。具体的语法为:

CREATE TABLE your_table (
    create_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    ...
);

这样,当插入数据时,如果没有提供该列的值,将会自动使用当前日期和时间作为默认值。

另外,还有一种解决方法是在插入语句中显式指定该列的值,而不依赖于默认值。具体的语法为:

INSERT INTO your_table (create_date, ...) VALUES (CURRENT_TIMESTAMP, ...);

这样,无论本地数据库是否接受"CURRENT_TIMESTAMP"作为默认值,都可以通过显式指定该值来解决问题。

希望以上内容对解决这个问题有所帮助。

0
0 Comments

在某些情况下,当使用MySQL数据库时,可能会出现一个问题,即在本地MySQL数据库中无法接受"CURRENT_TIMESTAMP"作为日期时间值,而在线上的MySQL数据库中可以接受。

这个问题可能是由于数据库丢失了日期的默认值导致的。我们可以尝试以下两种方法来解决这个问题:

方法一:

ALTER TABLE mydb.mytable MODIFY myfield datetime DEFAULT CURRENT_TIMESTAMP;

方法二:

ALTER TABLE mydb.mytable MODIFY myfield datetime DEFAULT NOW();

通过使用上述方法之一,我们可以修改MySQL数据库中特定表的字段,将其默认值设置为当前时间戳或当前日期和时间。这样,在向该表插入新记录时,如果没有为该字段提供值,则会自动将其设置为当前时间。

通过执行上述修改表的语句,我们可以解决本地MySQL数据库无法接受"CURRENT_TIMESTAMP"作为日期时间值的问题,并确保默认值正确地应用于该字段。这样,我们就能够在本地数据库中使用与在线数据库相同的日期时间值。

0
0 Comments

问题的出现原因是MySQL数据库中,live数据库接受"CURRENT_TIMESTAMP"作为datetime值,而本地数据库不接受。

原因是因为CURRENT_TIMESTAMP字段会自动选择服务器的当前时间,或者只接受时间戳值。因此,DATETIME字段必须使用null默认值或者根本没有默认值 - 默认值必须是一个常量值,而不是表达式的结果。

解决方法是通过在表上设置一个后插入触发器,在任何新记录上填充一个"now"值。

相关文档:http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html

0