mysql 客户服务号获取_《MySQL排错指南》——1.4 获取查询信息-阿里云开发者社区...

本节书摘来自异步社区出版社《MySQL排错指南》一书中的第1章,第1.4节,作者:【美】Sveta Smirnova(斯维特 斯米尔诺娃),更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.4 获取查询信息

正如前一节看到的一样,数据库会返回一些关于每个查询的重要信息,有些信息直接展现在MySQL的访问客户端中,而有些信息则需要通过如SHOW WARNINGS等命令才能得到。当从应用程序中调用SQL语句的时候,获取这些返回信息并确认没有异常情况发生同样重要。所有语言的MySQL API都提供了获取服务器返回信息的接口。本节将讨论这些接口。这里仅涉及C的API,因为我必须选择一种语言的API,并且大部分其他语言的API都是基于C的API的[2]。

受影响的行数

我们从之前见过的输出开始,每次插入、更新或者删除后都会显示有多少行数据插入、更新或者删除了:

418c497f9f9065790d09c4a614ce0983.png

这个信息代表查询正常执行并且修改了N行数据。

要在应用程序中获取相同的信息,可以调用:

29c985ff7f810c39612fbb2b1a710901.png

如果有改变发生,该函数会返回一个正数,如果没有改变那么返回0,−1代表反生错误。

对于UPDATE语句,如果客户端设置了CLIENT_FOUND_ROWS,那么该函数将会返回满足WHERE条件的行数,这个数并不总是和实际更改的行数一致。

提示 提示

对于Connector/J来说,默认不启用受影响的行,因为这不是JDBC兼容的特性并且会使其DML语句依赖于匹配的行数而不是受影响的行数的大多数应用程序产生错误。不过对于INSERT...ON DUPLICATE KEY UPDATE类型的语句会返回正确的更新数量。连接字符串属性useAffectedRows告诉Connector/J在连接到服务器的时候是否设置CLIENT_FOUND_ROWS标志。

匹配的行数

输出中表示该数目的字符串是:

499007cd3a6816ea127a1b6048dfe9f7.png

该输出表明有多少行满足WHERE条件。

下面的C函数:

0776a47bbdc61f71a80905d2fd14d004.png

以字符串格式返回关于最近的查询的补充信息。

对于更新操作来说,它返回的字符串类似:

c753550b257981710e2a278d8faaac20.png

其中,每个#依次对应代表匹配的行数、修改的行数和警告数目。可以通过解析该行中的“matched: #”获悉有多少行被查找出来。

被修改的行数

输出中代表该数目的字符串是:

1163416440d36ebbdb465858f920d9b3.png

该输出表明有多少行实际上修改了。需要注意的是,匹配行数M和修改的行数P是可以不同的。例如,假设你想要修改的列已经包含你指定的值,在这种情况下,该列会被认为是匹配的而不是修改的。

在应用程序中,像之前一样用mysql_info()获取信息,不过这次是解析“Changed: #”。

警告:数目和消息

输出中表示这部分信息的字符串是:

fde05daf666b2264b2371fd1df886487.png

如果服务器在处理请求过程中探查到一些不寻常的情况或者值得报告的情况,你将会获得警告。不过查询仍然会执行并且会修改数据。无论如何请确保检查警告信息,因为它们会帮助你获悉潜在的问题。

在应用程序中,有很多不同的方式去获取警告。仍可以使用mysql_info()函数,然后解析“Warinings: #”。也可以调用:

ec614153e9e289d5833ff1b7e946d7cd.png

如果有警告,可以执行SHOW WARNINGS命令去获取关于究竟发生了什么的文本消息。另一个选择是:

cb5e7465415ef39568b91a0d58eab601.png

该函数将返回最近的SQL状态(SQLSTATE)。例如,“42000”代表语法错误,“00000”代表没有错误和警告。

提示 提示

SQLSTATE的值由ANSI SQL标准定义,用于表明语句的执行状态。执行状态被设置成标准中定义的状态码,表明一个请求是成功完成还是返回异常。SQLSTATE以字符串形式返回。要了解MySQL服务器可能返回哪些状态码,可以阅读MySQL参数手册中的“服务器错误码和错误消息”一节。

错误

检查错误也总是很有用。下面的函数返回最近SQL语句的错误值。

..tu18-1.tif

该函数返回最近一次错误的MySQL错误代码。例如,语法错误会生成数字1064,0意味着没有错误。

1119a533474183d811b940f80e3b916f.png

该函数返回最近一次错误的文本信息。对于语法错误,它会返回类似以下的内容。

0d04a733a7243ff69a2ad369da60e721.png

这有利于保存存储于不同日志文件中的信息,使你可以在任何时候检查它们。

提示 提示

MySQL官方文档包含MySQL服务器可能返回的错误列表以及客户端错误列表。

**

通过perror获取错误字符串**

perror工具是MySQL发行包中携带的一款用于解决问题的非常有用的工具。perror能够提供与给定错误代码相关联的MySQL及其所在操作系统的错误信息。可以从MySQL命令行客户端、信息函数或其他错误日志文件中的错误消息中后面括号的部分获取错误代码。下面是一些示例:

56fe20250fe5efda5da0a6f68dd8f6c1.png

当命令产生错误的时候会在MySQL客户端输出这些错误代码,这些错误代码可以通过mysql_error()函数由程序获取。然而,当你面对一个错误码不知所措的时候,可以使用perror工具。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/266601.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于交换芯片的五元组的PCL规则过滤功能

2019独角兽企业重金招聘Python工程师标准>>> 基于交换芯片的五元组的PCL规则过滤功能作者: 韩大卫吉林师范大学2012.12.10Not Approved by Document Control Review Copy Only基于Marvell 98DX51xx/81xx交换芯片的五元组等的策略规则(PCL)过滤功能.现将部分的功能的…

python docx 合并文档 图片_不再为处理PDF烦恼,python处理操作PDF全攻略

本篇聊下Python对pdf的各种操作,包含pdf转word,pdf转图片,pdf翻转,加密,加水印等。pdf转换word文档 保留格式pdf转换为word文档,被大众经常使用的是纯Python库pdfminer和python-docx搭配使用,不…

windows server 2012 初安装体验

昨天晚上的windows server 2012 已时行 了发布了,为之在之前我已进行了下载测试安装,本来晚间想用来在虚拟机下进行安装VM-tool工具的,但是却因种种原因没有成功,为之补一下前面没有安装的过程截图。 进入下载页后,下载…

安卓APP_ 控件(1)—— TextView

摘自:安卓APP_ 控件(1)—— TextView 作者:丶PURSUING 发布时间: 2021-03-28 21:53:49 网址:https://blog.csdn.net/weixin_44742824/article/details/115283233 本文为学习笔记,是安卓APP学习的…

用python做数据分析pdf_利用python进行数据分析pdf

利用python进行数据分析pdf微盘下载!《利用python进行数据分析》利用Python实现数据密集型应用由浅入深帮助读者解决数据分析问题~适合刚刚接触Python的分析人员以及刚刚接触科学计算的Python程序员。利用python进行数据分析简介: 还在苦苦寻觅用Python控…

安卓APP_ 控件(2)—— Button

摘自:安卓APP_ 控件(2)—— Button 作者:丶PURSUING 发布时间: 2021-03-29 14:20:54 网址:https://blog.csdn.net/weixin_44742824/article/details/115290501 开篇:安卓APP_ 控件(1…

安卓APP_ 控件(3)—— EditText

摘自:安卓APP_ 控件(3)—— EditText 作者:丶PURSUING 发布时间: 2021-03-29 18:43:40 网址:https://blog.csdn.net/weixin_44742824/article/details/115305883 开篇:安卓APP_ 控件&#xff08…

python做游戏怎么实现窗口_python和py游戏窗口类

你在draw_sprite()中有事件循环,所以它一直运行到游戏结束,window.set_background永远不会执行。在您的代码构造不正确。在我试着更正它,稍后再发送代码。在编辑:如何组织代码的简单示例。在现在它在一个文件中。在Pygame中总是一…

如何使得账户密码永不过期

如何使得账户密码永不过期 原文:如何使得账户密码永不过期可以通过以下vbs脚本做的使得账户密码永不过期 dim users获取所有用户set users getobject("winmgmts:{impersonationlevelimpersonate}").instancesof("win32_useraccount")for each user in use…

怎么下载并安装python_怎么下载官网python并安装

怎么下载官网python并安装?百度搜索Python官网。看到上图显示官网的没,点击进入。把鼠标移到downloads上,然后看到下拉选项,点击Windows。然后看到如下界面。这么多的安装包,该选那个呢。下图画圈的是版本号&#xff0…

匿名函数python_基于python内置函数与匿名函数详解

内置函数 Built-in Functions abs() dict() help() min() setattr() all() dir() hex() next() slice() any() divmod() id() object() sorted() ascii() enumerate() input() oct() staticmethod() bin() eval() int() open() str() bool() exec() isinstance() pow() super()…

ASP.NET AJAX(服务器回调)

如果只用纯粹的 js ,你必须弥补 ASP.NET 服务器端抽象和有限的 HTML DOM 之间的鸿沟,这不简单,没有 VS 的智能提示和调试工具,编写无错的代码和诊断错误都非常困难。由于各种突发事件及实现的差异,编写能够在所有现代浏…

git版本回退命令_Git学习版本回退和管理文件的修改及删除操作

版本回退前面我们成功的提交了一次mygit.txt,下面咱对它进行修改,内容如下:Hello GitGit is so easy.然后用git status来跟踪该文件的状态:可以看到hellogit.txt已经被修改过了,到底这次修改的内容与上次的内容有什么不…

node 版本升级_Node-RED: 自动化事件触发工具的安装与介绍

Node-RED 介绍Node-RED 是一种基于流程的编程工具由 IBM 的新兴技术服务团队原创开发Node-RED 是一种事件触发工具,和 StackStorm 类似, 可以归类为上层的自动化工具,可以用来触发与之相对应的下层自动化工具,比如 ansible,来更加…

python处理mysql数据结构_python环境下使用mysql数据及数据结构和二叉树算法(图)...

python环境下使用mysql数据及数据结构和二叉树算法(图):1 python环境下使用mysql2使用的是 pymysql库3 开始-->创建connection-->获取cursor-->操作-->关闭cursor->关闭connection->结束45 代码框架6 import pymysql.cursors7 ###连接数据库8 con…

大数据工作流_大数据和人工智能时代下的数字化工作流

点击上方“Bentley软件”可以订阅哦本文作者Bentley 软件公司高级技术经理赵顺耐大数据、人工智能以及与之相伴相生的物联网已经成为现代社会的运行方式,信息技术的急速发展,和数据量爆炸式增长,改变了整个社会传统的运行方式。人类与信息技术…

多租户系统技术实现mysql_SaaS “可配置”和“多租户”架构的几种技术实现方式...

1、数据存储方式的选择多租户(Multi-Tenant ),即多个租户共用一个实例,租户的数据既有隔离又有共享,说到底是要解决数据存储的问题。常用的数据存储方式有三种。方案一:独立数据库一个Tenant,一个Database“的数据存储…

全国计算机等级考试题库二级C操作题100套(第15套)

更多干货推荐可以去牛客网看看,他们现在的IT题库内容很丰富,属于国内做的很好的了,而且是课程刷题面经求职讨论区分享,一站式求职学习网站,最最最重要的里面的资源全部免费!!!点击进…

iOS如何判断当前网络的运营商

2019独角兽企业重金招聘Python工程师标准>>> 在IOS上存在retain屏,经常需要在一些时刻用到高清图,有些时候也要到普通图。 在网络条件很爽的情况下,这当然不在话下。如果咱是iphone用户,又正好用的是移动卡。 如果还用…

Py函数直接传入root是啥意思_Python内部函数——用处何在?

这是一篇译文,原文地址:https://realpython.com/inner-functions-what-are-they-good-for/1. 封装内部函数可以免受函数之外的情况的影响,也就是说,对于全局命名空间而言,它们是隐藏的。下面是一个简单的例子&#xff…