美文网首页
Mysql 使用中的一些坑(一)

Mysql 使用中的一些坑(一)

作者: chaunsin | 来源:发表于2020-04-03 20:03 被阅读0次

以下是本人使用中遇到的一些坑,会陆陆续续收集更新,主要目的是希望能帮助到有缘人了,文笔不高,大白话介绍手把手解决问题。如有问题或想法请指出,不胜感激!!!

1.在创建字段的时候避免使用mysql中一些关键字比如primary字段来创建主键

先看下我的mysql版本

版本5.6.22

随便找了一个表测试

嗯?怎么会有问题呢,它提示‘primary = 1’这附近有问题。 这修改语句有什么问题?类型不匹配?也不对啊primary是int类型的而我传的值也正是int类型了!嗯?开始怀疑人生,有点摸不着头脑……

之后我又随便测试了一下结果如下

此时我不使用primary来作为修改条件,竟然能修改成功什么情况?最后借助了百度

在查到了一个帖子后我清楚了是关键字的缘故。

mysql-MySQL 更新语句为什么总是报错——CSDN问答频道

此时再次尝试更新如下

结论:避免使用系统相关的关键字,以免造成不必要的影响,如本例的更新失败。另外5.7 8.0等版本暂时未测试,有机会补充上

2.推荐不要使用enum枚举数值类型,推荐使用tinyint类型来代替,如果非要使用enum最好不要使用数值

场景

就是做一个简单的修改操作,其中修改的字段值中包含枚举值,但是修改的结果不报错,Row matched:1 Changed:0 Warinigs:0这种情况前提条件我使用的MYSQL版本是5.6.22版本!!!

表的结构

表的结构

创建表的sql语句

sql语句

添加一条测试数据

测试数据

好的目前表的结构很简单现在我来执行修改操作

命令行修改

很简单一个修改语句 匹配到了也修改成功了

修成功后的值

接下来下面落实到程序了.以下是golang的代码片段

流程就是把刚才上一步修改的数据状态2修改成状态3,可以看到,程序并没有报错,执行了通过了但是RowsAffected结果看到,影响了0条,说明数据没有修改成功,查看库中的记录的确也没有修改成功。

那么问题来了底是哪里错了呢?

把程序中的sql语句也拷贝了出来在命令行执行是成功的,但是在代码中执行却是错的,非常的诡异。起初我怀疑过数据库编码问题,也怀疑过驱动问题,做了各种各样的怀疑和排除,唯独没有考录到程序中处理sql语句替换值的问题。

兜兜转转,最后我浪费了大半天的时间终于发现了问题,原因是我使用的state变量是int类型,我这里应该是使用字符串类型,如下:

RowsAffected为1了,再查看数据库数据也成功修改了。至于失败的原因就是数据类型不匹配,另外mysql5.8 8.0版本不知道会不会有显示提示错误信息,以后有机会测一下,挖个坑。

总结:当sql语句执行的时候,发现执行结果中match到了结果>=1,但是Changed=0,就说明以下两点情况:

1.想要修改的值和修改的值一致时。    

2.修改的值和数据库设定的值不匹配也会出现此状态(本例子就是此状态)

另外,最重要的多练多看了,细心很重要了,这种低级错误往往是最致命的,程序出现这种隐式错误而且不好排查,更重要的是浪费时间啊!!!

相关文章

Mysql使用中的一些坑(二) - 简书

未完待续。。。

相关文章

  • Mysql 使用中的一些坑(一)

    以下是本人使用中遇到的一些坑,会陆陆续续收集更新,主要目的是希望能帮助到有缘人了,文笔不高,大白话介绍手把手解决问...

  • Mysql 使用中的一些坑(二)

    以下是本人使用中遇到的一些坑,会陆陆续续收集更新,主要目的是希望能帮助到有缘人了,文笔不高,大白话介绍手把手解决问...

  • Navicat Premium中文乱码

    这个很坑,使用Mysql 用 Navicat for mysql 不乱码,

  • BigData~09:Sqoop

    使用 Sqoop 把数据从 Hive 导出到 MySQL,中间遇到了一些坑,现总结如下: 一、报错总结 在 CDH...

  • mybatis 使用中的一些坑

    最近接手了一个项目(mybatis-spring-boot),将打包方式由war改为jar,期间发现了一些小坑 1...

  • mysql开发中遇到的一些坑

    调试的时候进入了事务,所以删除不了表

  • MySQL安装配置

    安装 使用Homebrew 安装MySQL 在使用MySQL 前,需要进行一些配置。 使用 启动MySQL 服务 ...

  • docker-mysql使用中的坑

    原文链接:https://blog.yexuejc.top/articles/2020/07/31/1596182...

  • MySQL 间隙锁

    间隙锁 间隙锁在MySQL中解决了幻读问题,在MySQL中通过RR也能解决幻读。 但是使用间隙锁时有两个坑需要注意...

  • Django使用空间数据的配置

    使用Django(2.2.10)+ MySQL(8.0)存储空间信息中遇到的坑,记录下。 配置 官方文档地理信息库...

网友评论

      本文标题:Mysql 使用中的一些坑(一)

      本文链接:https://www.haomeiwen.com/subject/shwkphtx.html