mysql 关于datetime设定默认值的一个问题
求高手解答:
我在测试服务器上创建正常的表,脚本部署到开发环境时,结果执行创建数据库脚本时,
DROP TABLE IF EXISTS T_Inc_LimitList;
CREATE TABLE T_Inc_LimitList (
FunctionID int(11) NOT NULL AUTO_INCREMENT,
FunctionName varchar(30) NOT NULL DEFAULT '',
FunctionType int(11) NOT NULL DEFAULT '1',
CTIME datetime NOT NULL DEFAULT NOW(),
UTIME datetime NOT NULL DEFAULT NOW(),
PRIMARY KEY (FunctionID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
提示错误ERROR 1067 (42000): Invalid default value for 'CTIME'
我知道可以更改正常执行
CTIME datetime NULL,
UTIME timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
但是现在业务上需要保留CTIME 字段记录数据写入时系统时间,UTIME字段记录最后一次修改时间;
想请教是我语法有什么不对,还是有关于数据库的配置需要设定
附上:测试库和正式库 都是同样的系统环境 mysql5.6+centos6.4
我在测试服务器上创建正常的表,脚本部署到开发环境时,结果执行创建数据库脚本时,
DROP TABLE IF EXISTS T_Inc_LimitList;
CREATE TABLE T_Inc_LimitList (
FunctionID int(11) NOT NULL AUTO_INCREMENT,
FunctionName varchar(30) NOT NULL DEFAULT '',
FunctionType int(11) NOT NULL DEFAULT '1',
CTIME datetime NOT NULL DEFAULT NOW(),
UTIME datetime NOT NULL DEFAULT NOW(),
PRIMARY KEY (FunctionID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
提示错误ERROR 1067 (42000): Invalid default value for 'CTIME'
我知道可以更改正常执行
CTIME datetime NULL,
UTIME timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
但是现在业务上需要保留CTIME 字段记录数据写入时系统时间,UTIME字段记录最后一次修改时间;
想请教是我语法有什么不对,还是有关于数据库的配置需要设定
附上:测试库和正式库 都是同样的系统环境 mysql5.6+centos6.4
...全文
相关推荐
详解Mysql数据库date, datetime类型设置0000-00-00默认值(default)报错问题
因此,当你试图为DATE或DATETIME字段设定“0000-00-00”作为默认值时,MySQL会报错。要解决这个问题,你可以采取以下方法:1.
MySQL版本低了不支持两个时间戳类型的值解决方法
这在MySQL 5.5及更低版本中是一个常见问题,因为这些版本不支持在同一张表中设定两个或更多自动填充当前时间的时间戳字段。如果你遇到这个错误,以下是一些可能的解决策略:1.
MySQL中的唯一性约束与NULL详解
若列允许NULL,而你又希望它们在唯一性约束中发挥作用,可以设定一个特殊的非NULL默认值,如“0”或空字符串,以确保唯一性。2.
mysql核心内容
- **默认值**:为字段设定默认值。 - **唯一性**:确保字段值的唯一性。 - **主键**:标识表中每条记录的唯一标识。 - **外键**:用于关联不同表的字段。
mysql开发设计规范
**默认值设定**:每个字段都应该有默认值,以便在插入新记录时避免null值,从而利于索引的使用。9. **索引策略**:索引不是越多越好,也不是越少越好。


