如何检查 .sql 文件中的 SQL 语法?

2024-06-25

如何检查 .sql 文件中的 SQL 语法?


SELECT STATEMENT_DIGEST_TEXT在MySQL 8.0中可以用于MySQL查询语法验证。

8.0.4>SELECT STATEMENT_DIGEST_TEXT('FLUSH TABLES')\G
STATEMENT_DIGEST_TEXT('FLUSH TABLES'): FLUSH TABLES 

8.0.4>SELECT STATEMENT_DIGEST_TEXT("SET GLOBAL second_cache.key_buffer_size=128*1024;")\G
STATEMENT_DIGEST_TEXT("SET GLOBAL second_cache.key_buffer_size=128*1024;"): SET GLOBAL `second_cache` . `key_buffer_size` = ? * ? ;

8.0.4>SELECT STATEMENT_DIGEST_TEXT("create TABLE t1 ( a2 int unsigned not null, b2 int unsigned not null, c2 int unsigned not null, primary key (a2), index b2x (b2), index c2x (c2) ) ENGINE=MEMORY;")\G
STATEMENT_DIGEST_TEXT("create TABLE t1 ( a2 int unsigned not null, b2 int unsigned not null, c2 int unsigned not null, primary key (a2), index b2x (b2), index c2x (c2) ) ENGINE=MEMORY;"): CREATE TABLE `t1` ( `a2` INTEGER UNSIGNED NOT NULL , `b2` INTEGER UNSIGNED NOT NULL , `c2` INTEGER UNSIGNED NOT NULL , PRIMARY KEY ( `a2` ) , INDEX `b2x` ( `b2` ) , INDEX `c2x` ( `c2` ) ) ENGINE = MEMORY ; 

如果不支持 SQL,您将收到错误消息。与下一个类似,但此响应有一些特别之处;

8.0.4>SELECT STATEMENT_DIGEST_TEXT('HELP SELECT')\G
ERROR 3676 (HY000): Could not parse argument to digest function: "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 'SELECT' at line 1".

你看到什么特别了吗?事实上,“HELP”是一个有效的但仅限客户端的关键字,即不是服务器关键字。无论如何,无效的SQL语句都会产生类似的情况;一个错误。

因此,您可以根据 ERROR 与 NO ERROR 进行检查,以了解传递的 SQL 语法是否有效(不包括非常有限的一组仅限客户端的命令,但大多数人不会对此感兴趣)。

概括;SELECT STATEMENT_DIGEST_TEXT是一个全面的 SQL 解析器(虽然这可能不是它的直接/预期功能),可以在所有情况下使用它来快速检查语句的有效性,而无需实际执行它们。就 SQL 有效性验证而言,这是巨大的进步。

请注意,为此您需要启动并运行 MySQL 服务器。您可以使用以下方式传递查询mysql -e客户端,或使用管道mysql etc.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检查 .sql 文件中的 SQL 语法? 的相关文章

  • 我应该为 MySQL 使用什么 python 3 库? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 据我所知 MySQLdb 仍然没有移植到 Python 3 pypy 上似乎有另一个名为 PyMySQL
  • 有没有办法强制显示工具提示?

    我有一个验证字段的方法 如果无法验证 该字段将被清除并标记为红色 我还希望在框上方弹出一个工具提示 并向用户显示该值无效的消息 有没有办法做到这一点 并且可以控制工具提示显示的时间 我怎样才能让它自己弹出而不是鼠标悬停时弹出 If the
  • 使用 PHP 运行 mysqldump 生成的空文件

    我不断收到运行时生成的空文件 command mysqldump opt h localhost u username p password dbname gt backup 2009 04 15 09 57 13 sql command
  • 使用 VBA 在 Excel 工作表中添加验证列表时出现问题

    我有一个 Excel 工作表 其中加载了动态数据结果集 加载所有数据后 我需要在每行末尾添加 是 否 下拉列表 我必须动态地执行此操作 因为我事先不知道结果集的大小 以下代码抛出 应用程序定义或对象定义的错误 Dim firstRow As
  • MySQL聚合函数问题

    在下面的例子中 为什么min 查询返回结果 但是max 查询没有 mysql gt create table t id int a int Query OK 0 rows affected 0 10 sec mysql gt insert
  • 使用 SQL 函数在 ActiveRecord 中进行插入/更新

    我想在我的 Rails 应用程序中存储 IP 地址 v4 和 v6 我已经安装了MySQL 的扩展 http labs watchmouse com 2009 10 extending mysql 5 with ipv6 functions
  • php 连接池 mysql [重复]

    这个问题在这里已经有答案了 我打算使用MYSQL 有可用的连接池扩展吗 或者说连接的正常做法是什么 是不是到处都用这个啊 mysqli connect localhost xxx xxx test 人们正常使用吗mysql connect
  • 如何确定选择哪个数据库

    有没有办法稍后输出当前选择的数据库的名称 只需使用 mysql query 或 mysqli query 甚至更好 或者最好使用 PDO SELECT DATABASE 附录 对于是否可以进行很多讨论FROM DUAL是否应包含在其中 在技
  • 我的 PHP 脚本如何判断服务器是否繁忙?

    我想运行一个 cron 作业来进行清理 需要大量的 CPU 和 Mysql 资源 我希望它仅在服务器不相对繁忙时运行 从 PHP 中确定这一点的最简单方法是什么 例如 是否有一个查询返回最后一分钟完成了多少个查询 if function e
  • 从多个表插入表

    嘿 我有一个连接表 连接两个不相关的表 两个表都有ID的 我需要选择ID从每个表中使用WHERE具有不同的值 例如这就是我的看法 INSERT INTO c aID bID VALUES SELECT a ID WHERE a Name M
  • 检查行是否存在,Laravel

    我有以下数据库结构 items id name user id users table id name user favorites table id user id item id 在我的项目永久链接页面上 我有一个 添加到收藏夹 按钮
  • 如何用PHP显示分层的“NESTED SET”数据?

    我试图弄清楚如何使用 php 显示嵌套的 MySQL 数据 我已经设法搁置所有 叶节点 但后来我陷入困境 我需要显示一整棵树及其所有元素的关系 这是表格 category id name lft rgt 1 Saws 1 12 2 Chai
  • 编写 MySQL 查询以获得所需结果

    我正在使用 MySQL 数据库 风险因素有四种类型 严重 高 中 低 表包含如下数据 id uaid attribute value time risk factor 1 1234 Edge Exist 16123 NONE 2 1234
  • 当用户单击链接时如何在表中创建新字段

    我的表格如下图所示 In order to insert data from this form into table I coded this supplier info supplier name POST supplier name
  • 如何在会话过期后自动更新数据库而不刷新我的页面

    您需要刷新或单击该代码 然后它才会转到索引页面 并且在会话过期后更新数据库之前 如何让会话过期后自动更新数据库 使用户活跃度为0 而无需刷新或点击页面 idletime 3600 after 1hr the user gets logged
  • 检查 Laravel 模型是否已保存或查询是否已执行

    我见过很多人使用这种方式来检查 Laravel 模型是否已保存 所以现在我想知道这是否是一种安全的方法 我还可以检查下面的查询是否像这样执行 检查模型是否已保存 Eg myModel new User myModel gt firstnam
  • 使用 C++ 连接器的 C++ mysql 连接 bad_alloc

    尝试建立一个简单的 mysql 连接 但得到一个bad alloc即使查看类似的帖子 我也不知道如何解决这个问题 这是我的代码 include
  • Django 在第二个数据库上调用存储过程

    我试图在多数据库 Django 安装上调用存储过程 但没有获得结果 存储过程 位于辅助数据库上 在 Django 中始终返回一个空数组 但在 mysql 客户端中执行时确实会出现预期结果 My view py文件 从 SomeDBModel
  • java应用程序,线程在终止MySQL连接后挂起

    我有一些工作线程正在运行 其中包括 MySQL 和 mysql connector java 5 1 20 当我杀死一些 SQL 语句 使用 mysql 客户端的kill 连接id 时 java线程挂起 这应该抛出一些异常 jstack 打
  • 从条件表中获取 WHERE 子句的条件

    我创建了以下简单的DataModel 我用以下数据填充了表格 1 桌子Customer INSERT INTO test customer CustomerName Country RegistrationDate VALUES Custo

随机推荐

  • DropDelegate Safari 拖动图像

    我正在尝试实施DropDelegate模式以允许将图像拖到我的视图中并加载它们 这对于取景器中的图像效果很好 但是当将图像从 safari 拖到我的视图中时 这不起作用 我注意到typeIdentifier or UTType所提供的信息
  • zip 样式 @repeat 嵌套形式

    repeat非常有用 然而 我遇到了嵌套表单的障碍 我需要制作一个比赛日程表 它有 2 个属性 日程数据 比赛日期 时间 地点 对手 和提交球队备注 例如 由于冬季风暴 1 月 7 日的比赛已移至1 月 9 日在 夏威夷 表单映射基于 ca
  • Eclipse DLTK:将向导添加到 ScriptExplorerPart 的“新建”菜单

    我正在尝试将向导条目添加到ScriptExplorerPartEclipse 的动态语言工具包 这些向导可以从File gt New gt Other 所以至少我知道它们有效 它们是使用扩展点添加的org eclipse ui newWiz
  • ocx_Oracle ORA-12541 tns 无侦听器

    我尝试通过cx Oracle连接到远程oracle服务器 db cx Oracle connect 用户名 密码 dsn tns 但它说数据库错误 ORA 12541 tns没有监听器 我能够通过数据库客户端 例如 datagrip 进行连
  • 如何在nodejs中处理xhr blob post

    客户端代码 var xhr new XMLHttpRequest xhr open POST frame true xhr send blob 服务器代码 app use bodyParser urlencoded extended fal
  • swagger文件默认属性的控制

    在 1 5 16 版本中使用 swagger core swagger annotations 控制我的数据模型的 swagger 文件中的默认属性时遇到问题 有一个定义 HTTP POST 输入 JSON 对象的 POJO import
  • 具有曼哈顿距离启发式的 A* 算法

    我一直在用 C 语言开发一个 15 个谜题求解器 我的代码使用的大量内存给我带来了一些问题 我不会发布我的代码 因为它太长了 我已经实现了我正在使用的大部分库 它可能会给您带来困惑 让我们从基础开始 我现在正在使用的东西是 全部用C实现 斐
  • 如何自动将多个 Monticello 提交从本地存储库复制到 Smalltalkhub.com?

    白天 我将多个版本的 Monticello 软件包提交到 磁盘上的本地存储库 稍后我想将本地存储库与 Smalltalkhub com 存储库同步 目前 我使用 Monticello 浏览器将本地提交手动一一复制到 Smalltalkhub
  • 不允许在文本区域中换行

    使用 jQuery 如何不允许插入新行 通过按 Enter 或复制文本 在半伪代码中 textarea keydown function this remove new lines Thanks EDIT 是像下面这样粗暴还是有更好的方法
  • 如何只编译一次.jrxml

    请帮忙 每次生成报告时都会编译 jrxml 我只想编译一次 请帮我看看我需要添加什么条件 我没有使用输入 输出流 使用compileReport可以只编译一次 不要将 JRXML 文件放在可通过 Web 访问的任何地方 JRXML 文件包含
  • 在opencv中找到物体的凸包?

    我是根据教程写的here http docs opencv org doc tutorials imgproc shapedescriptors hull hull html但我无法获得图像的凸包 我使用的是教程中所示的类似手部图像 我得到
  • GWT 树的工具提示:向节点添加鼠标悬停

    我正在尝试为 GWT 中的树节点添加工具提示 因此 我想为树的节点而不是树本身添加一个鼠标悬停侦听器 Treelistener 接口似乎是我想要的 但现在已弃用它来代替处理程序系统 我不太明白如何在单元格上获得鼠标悬停行为 因为我似乎只能将
  • 如何在 HTML5 画布元素上写入文本?

    是否可以在 HTML5 上编写文本canvas var canvas document getElementById my canvas var context canvas getContext 2d context fillStyle
  • 如何为构造函数生成的右值提供左值的生命周期?

    while model condition auto data yield data auto manipulate model data model get info args 我有一个 RAII 类型的对象manipulate 当它超出
  • Android 片段的单个实例

    有没有一种方法 当我们使用ft addToBackStack null 我们只向 BackStack 添加一个实例 当用户按下后退按钮时 将同一片段的多个实例添加到后退堆栈会造成混乱 您可以尝试为 addToBackStack 方法设置一个
  • 为什么不是所有代码编译位置无关?

    在 gcc 中编译共享库时 fPIC 选项将代码编译为位置无关的 是否有任何原因 性能或其他 导致您不编译所有位置独立的代码 它添加了一个间接 对于与位置无关的代码 您必须加载函数的地址 然后跳转到它 通常 函数的地址已经存在于指令流中
  • 无法从 Java SE 客户端访问 EJB - 查找失败错误

    我正在使用 Netbeans 并尝试使用 EJB 我有两个项目 2 个单独的应用程序 1 一个名为 EnterpriseApp 的 Java ME 项目 2 一个名为 Test 的标准 Java SE 项目 现在这就是我所做的 在 Ente
  • 我无法在 Java 程序(swing)中的面板/画布/窗口上绘制图形。有任何想法吗?

    我无法在 Java 程序 使用 swing 中在面板 画布 窗口上绘制图形 文本 我什至尝试将其分成两个类 其中一个类中包含paintComponent 扩展JPanel 而另一个类中包含其他内容 扩展JFrame 我尝试过带有画布和不带有
  • 查找每个客户组的最新帐户

    我有一个包含客户信息的表 每个客户都会分配一个客户 ID 他们的 SSN 他们在开设更多帐户时会保留该 ID 两个客户可能使用同一个帐户 每个客户都有自己的 ID 帐号不按日期排序 我想找到每个客户或客户组的最新帐户 如果两个客户曾经一起使
  • 如何检查 .sql 文件中的 SQL 语法?

    如何检查 sql 文件中的 SQL 语法 SELECT STATEMENT DIGEST TEXT在MySQL 8 0中可以用于MySQL查询语法验证 8 0 4 gt SELECT STATEMENT DIGEST TEXT FLUSH