zoukankan      html  css  js  c++  java
  • MySQL Error (Always Continue)

    MySQL Error (Always Continue)

     

    其实大部分error在网上都有对应的解决办法,尤其是对Mysql这种使用范围很广的技术。自己就不为每个error单独发布博客了,仅在这里不断添加,将自己遇到过的error,error原因,以及解决过程整理于此。按照Error号递增排序

     

    Error 1337 (42000)

    Error情景:在创建存储过程时报错ERROR 1337 (42000): Variable or condition declaration after cursor or handler declaration

    原因: 根据字面意思,我们要在定义游标和处理程序前定义完需要的变量以及“done”

    Solution:将创建游标和处理程序(DECLARE continue HANDLER FOR NOT FOUND SET done = ture;)的定义放在最后

     

    Error 1366

    Error情景:为varchar()类型数据新增字段的时候,明明有双引号且格式无误,但就是报错1366,无法插入。

    原因:字段的字符集与传输SQL语句的字符集不想匹配。(0629)

    Solution:修改字符集

    方法一:仅修改该字段字符集

    • 查看字段字符集(表名为t)

      SHOW full columns FROM t;
      

      DESC t; 无法查看字符集信息

    • 修改字段属性(即,修改字段类型)

      ALTER TABLE t CHANGE content content varchar(20) character SET utf8 collate utf8_unicode_ci;
      

      当然,utf8作为我们最常用的字符集,当然不想一次次地修改。

      PS.

      _ci结尾的字符集“不区分大小写”, _cs结尾则区分大小写

      utf8是国际编码,包含所有国家需要用到的字符

      一般推荐使用utf8_unicode_ci,因为utf8_general_ci虽然校对速度快,但对德语、法语、俄语支持得不是很好,正确率较低。

    方法二:修改数据库默认字符集并重启数据库

    • 退出当前所使用的数据库

      USE mysql;
      
    • 查询默认字符集

      SHOW variables like 'character%';
      
    • 修改默认字符集(Centos7 MySQL5.7)

      #退出MySQL
      vi /eyc/my.cnf
      #添加,保存并退出
      default-storage-engine=INNODB
      character-set-server=utf8
      collation-server=utf8_general_ci
      
    • 重启mysql

      systemctl restart mysqld.service
      
    • 检验:

      SHOW variables like 'character%';
      

      要求除了character_set_filesystem,character_sets_dir其他都为utf8.

       

    Error 1054 (42S22)

    Error情景:执行存储过程的时候报错ERROR 1054 (42S22): Unknown column 'temp_contnet' in 'field list'(0630)

    原因:在执行从已有表中读取以字符串为内容的字段转存至新表时,两表中对应两字段字符集不相同

    Solution:删除已新建的表和存储过程,修改存储过程新建表字符集,重新执行存储过程

     

    Error 1062 (23000)

    Error情景:执行存储过程的时候报错(0630)

    原因:之前测试的存储过程已经创建了表存储过程中要创建的表,因此就直接进行插入数据,但因为执行之前的存储过程时数据已经插入,造成了PRIMARY KEY 的重复。

    Solution:删除之前存储过程创建的表,重新执行存储过程

     

    Error 1064 (42000)

    Error情景:创建存储过程时报错ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near...(0710)

    原因:根据英文可知是有语法错误

    Solution:这里整理下有可能出现的语法错误,方便以后对照排查

    • 拼写错误
    • INSERT INTO 后面没有加括号,即使只有一个变量插入也要加括号

     

    Error 1075 (42000)

    Error情景:执行存储过程时报错(0630)

    原因:根据error的提示,说明在存储过程中创建数据表时没有将自增列设置为主键

    Solution:自增列必须为主键

     

    Error 1819 (HY000)

    Error情景:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements(0716)

    原因:创建用户时密码不符合规范

    Solution:详见此处

     

    Error 1044 (42000)

    Error情景:ERROR 1044 (42000): Access denied for user 'sx'@'%' to database 'travel_agency'(0716)

    原因:很自然咯,权限不够

    Solution:

    GRANT ALL PRIVILEGES ON `travel_agency`.* TO 'sx'@'%' WITH GRANT OPTION
    

    注意授权时数据库名字段一定要使用英文顿号

     

    Error情景:(0716)

    原因:用户sx没有访问mysql.user表的权限

    Solution:详见此处

     

  • 相关阅读:
    【Leetcode】92. Reverse Linked List II && 206. Reverse Linked List
    【Leetcode】91. Decode Ways
    记一次面经
    涨知识
    B-Tree 漫谈 (从二叉树到二叉搜索树到平衡树到红黑树到B树到B+树到B*树)
    涨知识
    HDU 1754 I Hate It 【线段树单点修改 维护区间最大值】
    POJ 1632 Vase collection【状态压缩+搜索】
    POJ 1011 Sticks 【DFS 剪枝】
    POJ 1088 滑雪 【记忆化搜索经典】
  • 原文地址:https://www.cnblogs.com/G-Aurora/p/13210217.html
Copyright © 2011-2022 走看看