我执行的你的SQL语句没有出现问题。我的MYSQL的版本:5.7.32-log
将数据库的start_time和end_time那两行改为:
start_time timestamp not null default '0000-00-00 00:00:00' comment '开始时间',
end_time timestamp not null default '0000-00-00 00:00:00' comment '结束时间',
create_time timestamp not null default current_timestamp comment '创建时间',
'name'
字段名称,不是单引号,是`,“TAB”键上方的那个键。
end_time 默认的日期 不再timestamp范围之内,默认范围是'1970-01-01 00:00:00'到2037年。
去F:/apache-maven-3.6.0/repository/ 把所有以带lastupdate的文件删除,去'F:/apache-maven-3.6.0/repository/org/springframework/spring-webmvc/4.1.7.RELEASE/找有没有spring-webmvc-4.1.7.RELEASE.jar
-> `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
这个最后的逗号是中文逗号。
)ENGINE=InnoDB AUTO INCREMENT=1000 DEFAULT CHARACTER SET=utf8 COMMENT='秒杀库存表';
这个AUTO_INCREMENT
-- 创建秒杀数据库表 CREATE TABLE seckill( `seckill_id` bigint NOT NULL AUTO_INCREMENT COMMENT '商品库存id', `name` varchar(120) NOT NULL COMMENT '商品名称', `number` int NOT NULL COMMENT '库存数量', `start_time` timestamp not NULL DEFAULT 0 COMMENT '秒杀开启时间', `end_time` timestamp not NULL DEFAULT 0 COMMENT '秒杀结束时间', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY PK_SECKILL_ID(seckill_id), key idx_start_time(start_time), key idx_end_time(end_time), key idx_create_time(create_time) )ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8 COMMENT='秒杀库存表' ;
md我知道了,timestamp少了个s
报错英文提示是什么?
这样应该没错了!
根据报错信息找问题,最后一行语法错误,应该是 ENGINE=InnoDB
可以,dao层不涉及多线程
mysql 给他设置了默认值
CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAM 表示在创建新记录和修改现有记录的时候都对这个数据列刷新
这个应该是你的mysql版本是5.6以下的,不支持同时有多个timestamp的值设置为当前时间,你可以给start_time,和end_time使用default 设置默认值,就可以成功了
这个字段的意思ID从1000开始往上自增而不是从默认的1,至于为什么要这样设置没有什么特别大的含义就是随便设置的。
在mysql里,单引号不是这个,要改成这样的`seckill_id`,COMMENT里的中文备注单引号则不变。
不对 ,如果你的密码是123456 就写-p123456 以此类推
mysql> insert into seckill(name,number,start_time,end_time)
-> values
-> ('1000元秒杀iphone6',100,'2015-11-01 00:00:00','2015-11-02 00:00:00'),
-> ('500元秒杀ipad2',200,'2015-11-01 00:00:00','2015-11-02 00:00:00'),
-> ('300元秒杀小米4',300,'2015-11-01 00:00:00','2015-11-02 00:00:00'),
-> ('200元秒杀红米note',400,'2015-11-01 00:00:00','2015-11-02 00:00:00');
ERROR 1366 (HY000): Incorrect string value: '\xC3\xEB\xC9\xB1ip...' for column 'name' at row 1
mysql> set names 'gbk';
Query OK, 0 rows affected (0.00 sec)
mysql> insert into seckill(name,number,start_time,end_time)
-> values
-> ('1000元秒杀iphone6',100,'2015-11-01 00:00:00','2015-11-02 00:00:00'),
-> ('500元秒杀ipad2',200,'2015-11-01 00:00:00','2015-11-02 00:00:00'),
-> ('300元秒杀小米4',300,'2015-11-01 00:00:00','2015-11-02 00:00:00'),
-> ('200元秒杀红米note',400,'2015-11-01 00:00:00','2015-11-02 00:00:00');
Query OK, 4 rows affected (0.00 sec)
Records: 4 Duplicates: 0 Warnings: 0
mysql>
IDEA 的教程视频慕课也有,搜一下
安装提示,把 default CURRENT_TIMESTAMP去除。
sql写成这样:
`create_time` timestamp not null comment '创建时间'
然后insert语句中,再给create_time赋值。
insert into
seckill(name,number,start_time,end_time,create_time)
values
('1000元秒杀iphone7',100,'2017-12-24 00:00:00','2017-12-25 00:00:00',now())
我猜测是sql版本的问题,我也出现这个问题了。我的mysql是5.1
网上的解释:
原因是当你给一个timestamp设置为on updatecurrent_timestamp的时候,其他的timestamp字段需要显式设定default值
但是如果你有两个timestamp字段,但是只把第一个设定为current_timestamp而第二个没有设定默认值,MySQL也能成功建表,但是反过来就不行...
这是mysql5.5版本对timestamp的处理
set sql_mode = 'ALLOW_INVALID_DATES'; 执行上述语句后问题解决
数据库乱码吧
https://my.oschina.net/zjllovecode/blog/1591476
new -> file -> name . sql
你说的MySQL直接创建是说的是MySQL Workbench这个管理界面工具吧,视频里面时IDEA里面自带的可以直接执行sql语句的工具,其实都一样的,只不过图形界面更方便
后面看答案才发现 是 ` 而不是单引号
数据库url有没有characterEncoding。。。等参数
CREATE TABLE seckill (
`seckill_id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '商品库存ID',
`name` VARCHAR (120) NOT NULL COMMENT '商品名称',
`number` INT NOT NULL COMMENT '库存数量',
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`start_time` TIMESTAMP NOT NULL COMMENT '秒杀开启时间',
`end_time` TIMESTAMP NOT NULL COMMENT '秒杀结束时间',
PRIMARY KEY (seckill_id),
KEY idx_start_time (start_time),
KEY idx_end_time (end_time),
KEY idx_create_time (create_time)
) ENGINE = INNODB AUTO_INCREMENT = 1000 DEFAULT CHARSET = utf8 COMMENT = '秒杀库存表' ;
自己问题,自己回答.......
唉~~
可以同时创建...但是另外一个写上默认的时间就可以了...create_time timestamp not null default '0000-00-00 00:00:00' 就可以了
道理都是一样的啊.....