记录工作中遇到的BUG,经典的数据库时区问题和字段类型tinyint(1)问题
记录工作中发现的相对而言经典的问题
【数据库时区问题】
我个人数据库配置为CST 如下
我们测试环境的数据库配置为UTC 如下
倘若我修改了测试环境数据库时区为CST。由此造成的问题是 系统读取到数据库的时间和在数据库中直接查询出来的时间不一致,一开始开发偷偷修改了数据库的时区以解决这个BUG。
这个是不对的。如果客户是在香港,欧洲呢,客户自己公司配置的数据库就是这个时区。后来开发修改了连接数据库配置的代码以兼容这个BUG
【mysql中tinyint(1)类型的字段】
我新建了1个表,定义了sex为tinyint(1)字段类型, mysql库本身是会把tinyint(1)字段读取为true false。我赋值0 ,读取为false.赋值1 2 3 4 读取为true了。
造成了系统中该字段的在系统模块显示为true false,字段类型为boolean这个是不对的。应该仍然是数字类型的数据
CREATE TABLE users
(
id
int(11) NOT NULL AUTO_INCREMENT,
username
varchar(20) NOT NULL,
password
varchar(255) NOT NULL,
realname
varchar(255) NOT NULL,
sex
tinyint(1) DEFAULT NULL,
phone
varchar(255) NOT NULL,
utype
tinyint(1) DEFAULT NULL,
addtime
datetime DEFAULT NULL,
adduser
varchar(255) DEFAULT NULL,
PRIMARY KEY (id
),
UNIQUE KEY phone
(phone
)
)