人若无名,便可专心练剑

 问题 标签

mysql 数据库常见错误解决

  |   0 评论   |   2,591 浏览

1,创建函数时:This function has none of DETERMINISTIC, NO SQL

历史解决方法:

mysql> show variables like 'log_bin_trust_function_creators';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| log_bin_trust_function_creators | OFF   |
+---------------------------------+-------+
mysql> set global log_bin_trust_function_creators=1;
mysql> show variables like 'log_bin_trust_function_creators';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| log_bin_trust_function_creators | ON    |
+---------------------------------+-------+

彻底解决方法:

在mysql配置文件my.inf 中加入 log_bin_trust_function_creators=1

原因:

数据库开启了bin-log, 我们就必须指定我们的函数是否是
1 DETERMINISTIC 不确定的
2 NO SQL 没有SQl语句,当然也不会修改数据
3 READS SQL DATA 只是读取数据,当然也不会修改数据
4 MODIFIES SQL DATA 要修改数据
5 CONTAINS SQL 包含了SQL语句


2,mysql 执行计划无法创建

解决方法1:

mysql> show variables like '%event%';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| event_scheduler | OFF   |
+-----------------+-------+
1 row in set (0.00 sec)

mysql> set global event_scheduler = on;
Query OK, 0 rows affected (0.00 sec)
解决方法2,彻底结局

在mysql配置文件my.inf 中加入event_scheduler=1

3,linux下mysql区分大小写
在mysql配置文件my.inf 中加入 lower_case_table_names=0 不区分大小写
 lower_case_table_names=0
 其中0:区分大小写,1:不区分大小写 

4,查询时数据报错:com.mysql.jdbc.PacketTooBigException: Packet for query is too large


原因:mysql max_allowed_packet  设置的太小

 临时解决方法:set global max_allowed_packet = 10*1024*1024*10

侧地解决方法:修改配置文件 my.inf 没的话 添加有的话直接修改
max_allowed_packet=100M