-
缱绻 数据领袖Lv6
发表于2019-4-12 19:05
楼主
本帖最后由 缱绻 于 2019-8-30 18:00 编辑
3、解决方法: 复制代码
复制代码注:需要刚开始创建数据库的时候就创建为utf-8编码的数据库!
问题1、问题现象:
部署BI时,使用mysql数据库作为缺省库,部署过程中出现建表语句错误,如下图:
2、问题原因分析:
在mysql5.6及以后版本中对datetime数据做了校验。创建表的时候给datetime类型的默认值为0,然而在数据校验的时候,0校验不通过。
在当前数据库中查询参数 sql_mode 的值,
showvariables like 'sql_mode'
如果该参数的值中有 NO_ZERO_DATE,则会以上所描述的现象。
NO_ZERO_DATE:在非严格模式下,可以插入形如“0000-00-00 00:00:00”的非法日期,MySQL数据库仅抛出一个警告。而启用该选项后,MySQL数据库不允许插入零日期,插入零日期会抛出错误而非警告。
如果没有该值,不会出现该问题,与数据库版本没有直接关系。
进入数据库后台设置sql_mode,如下所示:
- mysql> SET GLOBAL sql_mode = '';
- Query OK, 0 rows affected, 1 warning (0.00 sec)
- mysql> commit;
- Query OK, 0 rows affected (0.00 sec)
- mysql> exit;</font>
---------------------
注意:
MySQL在 Windows上注册服务时,如果没有指定配置文件的路径,默认是用的 my.ini 。
如果没有该文件,会根据操作系统的情况使用默认值,而不是使用 my-default.ini 文件,这一点需要注意。
避免该问题的两种方法:
(1)注册服务时指定配置文件;
(2)将配置文件改名为 my.ini;
问题2:问题现象如下图:
解决方法:mysql数据库编码需要设置成UTF-8
查看数据库编码格式
- mysql> show variables like 'character_set_database';