mysql踩坑记录

来源:互联网 发布:新版淘宝直播在哪里看 编辑:程序博客网 时间:2024/04/28 22:26

由于本小白并未系统学习过mysql数据库,今天跟着慕课网视频,敲创表sql语句。一模一样的sql语句,人家的轻松通过,我的一直报错(用的cmd)。找了半天,逼不得已只能一个一个词去掉调试sql语句,还去度娘那串了个门。才发现了两处错误,特此做个笔记,希望下次不要在掉坑。

PS:看来得找个时间系统学下mysql了


sql语句在此(windows的给过了):

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 '秒杀库存表';

问题:

  • 在创建表的时候,列名(即字段名)上不能带引号(单、双引号都不行)。
  • 在设置时间默认值上:由于MySQL目前字段的默认值不支持函数,所以以create_time datetime default now() 的形式设置默认值是不可能的。代替的方案是使用TIMESTAMP类型代替DATETIME类型。
    • 可是,最坑的就是:TIMESTAMP列类型自动地用当前的日期和时间标记INSERT或UPDATE的操作。如果有多个TIMESTAMP列,只有第一个自动更新。所以,需要创建默认时间的那个字段,在创表的时候一定要在其他时间字段上面。比如这样就可以:
      create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘创建时间’,
      start_time timestamp NOT NULL COMMENT ‘秒杀开始时间’,
      end_time timestamp NOT NULL COMMENT ‘秒杀结束时间’,`
      创表成功
      但是换一下顺序~~
      直接报错
      就报错了

懵逼的是,老师的创建成功了。。。望路过的大神指点下
这里写图片描述

原创粉丝点击