人若无名,便可专心练剑

mysql 数据库常见错误解决

  |   0 评论   |   2,549 浏览

    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=1 不区分大小写
     lower_case_table_names=1
     其中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
    




    dropbox:邀请您的加入,让你随时随地同步您的文件:https://db.tt/wCU4HQq4

    人生格言: 今天很残酷,明天更残酷,后天会很美好,但绝大多数人都死在明天晚上,却见不到后天的太阳,所以我们干什么都要坚持!

    评论

    发表评论

    validate