MariaDB中的日期时间current_timestamp

时间:2015-09-27 06:15:24

标签: mysql datetime mariadb

我已经完成了我网站的第一个版本,现在我已准备好将其从我的本地开发环境(MySQL)移到我的x10hosting服务器(他们使用MariaDB)。

我可以移动所有文件,但是当我移动数据库时,问题就开始发生了。

我在我的本地计算机上从phpmyadmin将我的数据库导出为.sql文件,并在x10上打开phpmyadmin以导入该文件,但它会抛出此错误:

#1067 - Invalid default value for 'created' 

我追踪的问题是“创造了”这个问题。是一个日期时间类型,显然MariaDB不允许你将current_timestamp设置为datetime的默认值。

如何在maria中使用当前时间戳作为日期时间默认值?

完整的create语句是:

CREATE TABLE IF NOT EXISTS  `comments` (
   `id` BIGINT( 10 ) NOT NULL AUTO_INCREMENT ,
   `post` BIGINT( 10 ) NOT NULL ,
   `author` VARCHAR( 50 ) NOT NULL ,
   `comment` TEXT NOT NULL ,
   `mod_status` INT( 2 ) NOT NULL DEFAULT  '0' COMMENT  '0 is needing moderation,   1 is approved, and 2 is rejected',
   `created` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ,
   PRIMARY KEY (  `id` )
) ENGINE = INNODB DEFAULT CHARSET = latin1 AUTO_INCREMENT =4;

2 个答案:

答案 0 :(得分:0)

在MariaDB中,您必须将DEFAULT_TIMESTAMP称为函数()

`created` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP(),
                                                     ^^

然后它将起作用。使用CURRENT_TIMESTAMPNOW触发INSERT语句时,已经注意到了相同的特性。在MySQL中可以做到

insert into table (created, id) values ('CURRENT_TIMESTAMP', 42)

在MariaDB中必须是

insert into table (created, id) values (CURRENT_TIMESTAMP(), 42)

答案 1 :(得分:-1)

我猜你的列的类型是datetime而不是时间戳,所以你应该使用

current_date

查看https://mariadb.com/kb/en/mariadb/current_date/