打卡规则小模块设计 Mysql 插入中文错误:Incorrect string value: 'xE7xA8x8BxE5xBAx8F...' for column 'course' at row
因为明天就要完成需求,所以先在这里把一些基本的信息进行记录,后面有时间再进行补充。
建表:
char 长度是固定的,不管你存储的数据是多少他都会都固定的长度。而varchar则处可变长度但他要在总长度上加1字符,这个用来存储位置。
所以实际应用中用户可以根据自己的数据类型来做。
再看看char,与varchar在速度上的区别吧。
mysal>create tabe ab(v varchar(4),c char(4)); query ok ,0 rows affected(0.02 sec) mysql>insert into abc values('ab ','ab ') query ok ,1 row affected(0.00 sec); mysql->select concat(v ,'+') ,concat(c ,'+') form abc ab + | ab+ 1rows in set (0.00 sec)
从上面可以看出来,由于某种原因char 固定长度,所以在处理速度上要比varchar快速很多,但是对费存储空间,所以对存储不大,但在速度上有要求的可以使用char类型,反之可以用varchar类型来实例。
注明:
在用char字符类型时内容后面有空间时必须作相关处理,要不就会把空格自动删除。
建意:
myisam 存储引擎 建议使用固定长度,数据列代替可变长度的数据列。
memory存储引擎 目前都使用固定数据行存储,因此无论使用char varchar列都没关系,
innodb 存储引擎 建意使用varchar 类型
建立表后插入中文出现以下错误
原因建表时没有加入utf-8编码。而采用了默认的latin1编码。
正确的:
CREATE TABLE `kq_card_rule` ( `id` char(32) NOT NULL COMMENT '主键', `card_rule_name` varchar(50) NOT NULL COMMENT '规则名称', `object_type` tinyint(2) NOT NULL COMMENT '对象类型:01代表经理;02代表人事;03代表销售;04代表其他', `card_place` varchar(100) DEFAULT NULL COMMENT '地点', `time_interval` int(4) DEFAULT NULL COMMENT '打卡时间间隔', `rule_operator` varchar(15) DEFAULT NULL COMMENT '规则添加者', `rule_type` tinyint(1) NOT NULL COMMENT '状态:0规则失效(下架),1规则有效', `inserttime` datetime DEFAULT NULL COMMENT '添加时间', `updatetime` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='打卡规则表'
睡觉
接触到js对日期的格式化了,突然发现js还蛮强大的,既然前后端加需求分析都要做,那就多写点js代码。
new Date(value).format("yyyy-MM-dd HH:mm:ss");