`
zl378837964
  • 浏览: 189417 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

mysql为datetime类型字段设置默认值default

阅读更多

 

操作服务器环境为Linux centos5.7

安装的mysql版本 MariaDB,图简单直接使用命令install上去的。

 

在自己mac上测试数据库修改Alter语句没有问题的,

 

ALTER TABLE `XXX`.`XXX` ADD COLUMN `createtime` datetime NOT NULL DEFAULT NOW() AFTER `userinfo`;

 

但是在服务器上修改运行则 提示错误:

 

ERROR 1067 (42000): Invalid default value for 'createtime'

 

查了查很多说是sql_mode设置的不对,查了下没有设置都是空的,

但是发现了一个问题 ,就是mysql版本是

MariaDB [XXX]> show variables like 'version';

+---------------+----------------+

| Variable_name | Value          |

+---------------+----------------+

| version       | 5.5.52-MariaDB |

+---------------+----------------+

而测试机环境是 version 5.7.17。

 

尴尬 》》》查资料了一番后,得知datetime类型只支持Mysql5.6.5以上版本。

 

修改测试语句--- 将 datetime 换成 TIMESTAMP 即可:

 

ALTER TABLE `XXX`.`XXX` MODIFY COLUMN `createtime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;

 +------------+--------------+------+-----+-------------------+----------------+

| Field      | Type         | Null | Key | Default           | Extra          |

+------------+--------------+------+-----+-------------------+----------------+

| id         | int(11)      | NO   | PRI | NULL              | auto_increment |

| createtime | timestamp    | NO   |     | CURRENT_TIMESTAMP |   |

+------------+--------------+------+-----+-------------------+----------------+

还有,“DEFAULT NOW()” 命令行不太好使,但客户端执行没问题

 

 

参考: 

http://stackoverflow.com/questions/168736/how-do-you-set-a-default-value-for-a-mysql-datetime-column/10603198

 

原文链接:http://zl378837964.iteye.com/blog/2368532

 

 

 

0
0
分享到:
评论

相关推荐

    MySQL的datetime设置当前时间为默认值[定义].pdf

    MySQL 中的 datetime 类型字段无法使用函数作为默认值,因此无法使用 `create_time datetime default now()` 的形式设置默认值。代替的方案是使用 TIMESTAMP 类型代替 DATETIME 类型。 TIMESTAMP 类型有两个重要的...

    sqlserver中日期型字段设默认值

    当在表定义中设置字段的默认值时,可以使用`GETDATE()`来确保该字段总是被填充为创建记录时的当前时间。例如,创建一个包含日期字段的表,并设置其默认值为`GETDATE()`: ```sql CREATE TABLE Orders ( OrderID ...

    mysql 自增长 时间字段

    在 MySQL 中,我们可以为字段设置默认值,以便在插入数据时自动填充。例如,创建一个 Message 表,设置 Content 字段的默认值: ```sql CREATE TABLE Message ( Message_ID int NOT NULL PRIMARY KEY AUTO_...

    MySQL表字段设置默认值(图文教程及注意细节)

    在SQL Server(MSSQL)中,我们可以为`date`类型设置`GETDATE()`作为默认值,为`char`类型设置`NULL`,但在MySQL中,这些规则并不适用。例如,对于MySQL,`date`类型默认值应留空(NULL),`char`类型如果不能为空,...

    详解Mysql数据库date, datetime类型设置0000-00-00默认值(default)报错问题

    MySQL数据库在5.7版本之后,对于`date`和`datetime`类型的字段,设置默认值为"0000-00-00"时会出现错误提示“Invalid default value for 'time'”。这个问题源于MySQL的`sql_mode`配置,特别是其中的`NO_ZERO_IN_...

    MySql性能调优(一)字段类型的选取之时间类型

    但是,如果我们不需要自动更新时间,可以将 TIMESTAMP 类型设置为默认值为空,例如: `CREATE TABLE users (id INT, last_updated TIMESTAMP DEFAULT NULL);` 选择合适的时间类型对数据库的性能和数据存储效率具有...

    MySQL如何为字段添加默认时间浅析

    - 创建新表时,可以使用`DEFAULT CURRENT_TIMESTAMP`为`TIMESTAMP`字段设置默认值,例如: ```sql CREATE TABLE table_name ( create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', ... ); ...

    在mysql建表中将日期设置为默认取得当前系统时间

    例如,在创建`USER`表时,`REGISTRATION_TIME`和`LAST_LOGIN_TIME`字段被定义为`TIMESTAMP`类型,并分别设置了默认值为`CURRENT_TIMESTAMP`,这意味着每当有新记录插入时,如果没有显式提供时间,则这两个字段将自动...

    mysql添加字段.docx

    例如,如果你想在名为`students`的表中添加一个`age`字段,类型为整型,并设置默认值为18,你可以使用以下语句: ```sql ALTER TABLE students ADD age INT DEFAULT 18; ``` 如果你希望新字段位于已有字段`name`...

    mysql 设置默认的时间值

    例如,创建一个名为 `default_datetime` 的触发器,用于在插入记录时设置 `create_time` 字段的默认值: ```sql DELIMITER | CREATE TRIGGER default_datetime BEFORE INSERT ON test_time FOR EACH ROW IF NEW....

    解析MySQL设置当前时间为默认值的方法

    在这个例子中,`ALTER TABLE`语句改变了`createtime`字段的数据类型为`TIMESTAMP`,并设置了默认值为`NOW()`,这会返回当前的日期和时间。 方法二是在创建表的时候就直接设置默认值。如果你还未创建表,可以使用...

    mysql自动生成时间1

    此外,需要注意的是,从MySQL 5.6.5版本开始,可以设置多个字段的默认值为`CURRENT_TIMESTAMP`,但只有一个可以设置为`ON UPDATE CURRENT_TIMESTAMP`,这意味着只有这个字段会在记录更新时自动更新。如果你想要在多...

    mysql数据类型和字段属性原理与用法详解

    字段属性主要包括是否可为空(NULL/NOT NULL)、主键(PRIMARY KEY)、唯一键(UNIQUE KEY)、自增长(AUTO_INCREMENT)和默认值(DEFAULT)。NULL属性允许字段值为空,NOT NULL则不允许为空。主键用于标识表中每条...

Global site tag (gtag.js) - Google Analytics