mysql中单表多timestamp设置default问题

mysql中,同一个表多个timesatmp字段设置default的时候,经常会报错。

一个表只能有一个设置default的字段。

但是有时只有一个字段设置default也会报错。

会报:Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause

但是检查代码,发现只有一个timestamp设置了default。

例如:

 代码如下 复制代码

create table dxs_product
(
   pid                  int not null auto_increment comment '产品id',
   pname                varchar(300) comment '产品名',
   istop                int comment '置顶',
   begintoptime         timestamp comment '置顶时间',
   endtoptime           timestamp comment '置顶时间',
   publishtime          timestamp default CURRENT_TIMESTAMP comment '发布时间',
   primary key (pid)
)

原因是当你给一个timestamp设置为on updatecurrent_timestamp的时候,其他的timestamp字段需要显式设定default值

但是如果你有两个timestamp字段,但是只把第一个设定为current_timestamp而第二个没有设定默认值,mysql也能成功建表,但是反过来就不行...

改成:

 代码如下 复制代码

create table dxs_product
(
   pid                  int not null auto_increment comment '产品id',
   pname                varchar(300) comment '产品名',
   istop                int comment '置顶',
   publishtime          timestamp default CURRENT_TIMESTAMP comment '发布时间',
   begintoptime         timestamp comment '置顶时间',
   endtoptime           timestamp comment '置顶时间',
   primary key (pid)
)

就不报错了。

第一个timestamp设置了default才可以,后面的设置default就不行。而且只能有一列设置default。

时间: 2024-09-20 19:20:17

mysql中单表多timestamp设置default问题的相关文章

mysql单表多timestamp报错#1293 - Incorrect table definition;

mysql单表多timestamp报错#1293 - Incorrect table definition; there can be only one TIMESTAMP column with C解决 一个表中出现多个timestamp并设置其中一个为current_timestamp的时候经常会遇到 #1293 - Incorrect table definition; there can be only oneTIMESTAMP column with CURRENT_TIMESTAMP

mysql单表多timestamp的current_timestamp设置问题

一个表中出现多个timestamp并设置其中一个为current_timestamp的时候经常会遇到 1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause 原因是当你给一个timestamp设置为on update current_timestamp的时候,其他的timestamp字段需要显式设定

mysql多个TimeStamp设置

timestamp设置默认值是Default CURRENT_TIMESTAMP timestamp设置随着表变化而自动更新是ON UPDATE CURRENT_TIMESTAMP   但是由于 一个表中至多只能有一个字段设置CURRENT_TIMESTAMP 两行设置DEFAULT CURRENT_TIMESTAMP是不行的.   还有一点要注意 1 2 3 4 5 6 7 8 9 10 11 CREATE TABLE `device` (     `id` INT(10) UNSIGNED

mysql服务器字符集查询和设置方法

  1.查看 MySQL 数据库服务器和数据库字符集 show variables like '%char%'; 2.查看当前安装的 MySQL 所支持的字符集. show charset; 3.设置编码: 修改my.cnf vi /etc/my.cnf 在[client]下添加 default-character-set=utf8 在[mysqld]下添加 default-character-set=utf8 保存,重启mysql即可; 修改数据库的字符集 mysql>use mydb mys

【重磅推荐】MySQL大表优化方案(最全面)

当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化: 单表优化 除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑.部署.运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的.而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量: 字段 尽量使用TINYINT.SMALLINT.MEDIUM_INT作为整数类型而非INT,如果非负则加上UNSIGNED VARCHAR的

创建 表-mysql创建表错误,下面的代码哪儿不对?

问题描述 mysql创建表错误,下面的代码哪儿不对? CREATE TABLE ACCOUNT( ID INT(4) CONSTRAINT ACCOUNT_ID_PK PRIMARY KEY, RECOMMENDER_ID INT(4) CONSTRAINT ACCOUNT_RECOMMENDER_ID_FK REFERENCES ACCOUNT(ID), LOGIN_NAME VARCHAR(30) NOT NULL CONSTRAINT ACCOUNT_LOGIN_NAME_UK UNIQU

mysql修改表、字段、库的字符集

mysql修改表.字段.库的字符集 修改数据库字符集: ALTER DATABASE db_name DEFAULT CHARACTER SET character_name [COLLATE ...]; 把表默认的字符集和所有字符列(CHAR,VARCHAR,TEXT)改为新的字符集: ALTER TABLE test CONVERT TO CHARACTER SET character_name [COLLATE ...] 如:ALTER TABLE test CONVERT TO CHAR

mysql修改表结构方法实例详解_Mysql

本文实例讲述了mysql修改表结构方法.分享给大家供大家参考.具体如下: mysql修改表结构使用ALTER TABLE语句,下面就为您详细介绍mysql修改表结构的语句写法,希望对您学习mysql修改表结构方面能有所帮助. ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...] alter_specification: ADD [COLUMN] create_definition [FIRST | AFTER column_nam

mysql更改表引擎INNODB为MyISAM的方法总结

常见的mysql表引擎有INNODB和MyISAM,主要的区别是INNODB适合频繁写数据库操作,MyISAM适合读取数据库的情况多一点,如何把表引擎INNODB更改为MyISAM呢? 使用以下mysql sql语句,可以给表设定数据库引擎: ALTER TABLE `wp_posts` ENGINE = MyISAM; 在需要使用mysql的全文索引(FULLTEXT index)的时候,这张表的数据库引擎必须是MyISAM类型.关于INNODB为MyISAM数据库引擎有什么具体区别 例子 修