最近在使用mysql的过程中遇到一些问题,挺奇怪的,感觉挺有意思就记录了下来。第一个问题就是我想在mysql中创建一个函数,这个函数是递归查询一个单位下的所有子单位,将所有子单位(包括本单位)的id字符串返回。但是在mysql的工具navicat中怎么创建都不行,并且报了一个1418的错误。后来通过查询资料终于找出问题的原因。
解决方法如下:
1. mysql> SET GLOBAL log_bin_trust_function_creators = 1;
2. 系统启动时 --log-bin-trust-function-creators=1
3. 在my.ini(linux下为my.conf)文件中 [mysqld] 标记后加一行内容为 log-bin-trust-function-
creators
后来在使用mysql的过程中又发现了一种现象。情况是这样的,有一天我写的系统突然崩溃了,然后我就查原因,发现单位表中有一条数据的id为空,我当时就感觉这怎么可能,id是主键,然后设置的还是not null,这种情况是不可能出现的。但是mysql中在插入数据的时候,id不设置值,默认的是null,此时插入不成功。在修改的时候,把id清空,这时候id是空字符,所以可以修改成功,就出现上面的这种情况。