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:自增列必须为主键

 

最新文章

  1. Linux Kernel Oops异常分析
  2. Linux crond定时任务
  3. ASP.NET 页面间数据传递的方法
  4. [转载]linux下mysql 自动备份
  5. OpenJudge Trans
  6. 于iOS跳转到应用程序AppStore
  7. net中使用ETW事件
  8. CSS3 transition 浏览器兼容性
  9. js 获取元素内部文本
  10. 爬虫_url去重策略
  11. 【BZOJ3238】差异(后缀自动机)
  12. PAT1012:The Best Rank
  13. Django - 数据按年月日查找
  14. Webbench、ab命令:做压力测试的工具和性能的监控工具
  15. ubuntu12.04 mysql 卸载安装
  16. Java过滤器Filter的使用详解
  17. Dynamic Binding
  18. mysql的常用优化知识
  19. Notes of Daily Scrum Meeting(11.12)
  20. 每日scrum(2)

热门文章

  1. Java 多线程基础(一)基本概念
  2. 二叉树的层次序列化和反序列化-----stringstream
  3. 嵌入式Linux学习笔记(六) 上位机QT界面实现和串口通讯实现
  4. iOS-地图定位 && 解码与反解码
  5. 聊聊依赖注入注解@Resource和@Autowired
  6. java类的加载顺序和实例化顺序(Demo程序)
  7. [源码解析] Flink的groupBy和reduce究竟做了什么
  8. YAML语法:
  9. Uint47 calculator【map数组+快速积+各种取余公式】
  10. java.net.URISyntaxException 问题解决