Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何获得.sql脚本中语法错误的精确位置?_Mysql_Database_Syntax Error_Mysql Workbench - Fatal编程技术网

Mysql 如何获得.sql脚本中语法错误的精确位置?

Mysql 如何获得.sql脚本中语法错误的精确位置?,mysql,database,syntax-error,mysql-workbench,Mysql,Database,Syntax Error,Mysql Workbench,我正在尝试执行一个.sql脚本,将值插入数据库。 问题是,脚本的语法有一些问题 Error Code: 1064. 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 '' at line 1 0.078 sec 但是脚本非常大,只有几个Mos,所以我无法手动检查错误在哪里。

我正在尝试执行一个.sql脚本,将值插入数据库。 问题是,脚本的语法有一些问题

Error Code: 1064. 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 '' at line 1    0.078 sec
但是脚本非常大,只有几个Mos,所以我无法手动检查错误在哪里。根据错误消息,它应该接近引号,但遗憾的是,所有插入的值都在脚本文件的一行上,因此“第1行”的指示毫无帮助

有没有办法获得错误的精确位置?我特别想知道语法错误的列号。可能吗

我正在使用以下类型的命令:

mysql -u root -p  Wikicategory < path\to\script\script.sql
mysql-u root-p Wikicategory
MySQL工作台使用的解析器(基于ANTLR4)与MySQL服务器(基于yacc)不同。基于ANTLR4的解析器通常(但并非总是)可以报告具有精确位置的错误

我不认为这个问题太大。如果是,您将得到不同的错误(因为连接缓冲区不够大)

因此,最好的选择是重新格式化查询。对于选择,您可以使用MySQL Workbench,但最好使用带有SQLTools插件的Visual Studio代码。也不是最好的结果,但它似乎能够重新格式化所有类型的查询


然后再次运行脚本以查看是否得到了更好的错误位置。

不可能,您必须找出它,而near通常是有用的。如果mysql workbench可以在语法中用红色下划线,这意味着必须有某种方法检索检测到错误的列。Near对我的情况没有帮助,我多次出现“”而没有问题。那么,请将.sql代码复制并粘贴到Workbench中。代码太长,无法手动检查。我试图滚动,但很可能需要几个小时才能找到它。红色下划线对于几百个字符,甚至几千个字符都很有用,但这里我要说的是超过一百万个字符的行。更不用说它在滚动几分钟后崩溃了mysql workbench。如果您有一个超过一百万个字符的查询,我想我们已经找到了问题所在。
附近的空字符串可能意味着mysql根本无法加载beast。如果脚本中有很多查询,那么是时候开始一次一个地测试它们了。知道这个脚本的来源可能会有帮助。我碰巧发现了错误,它是在查询的末尾添加了一个逗号。所以这确实是一个语法错误,幸运的是我可以手动找到它。然而,我仍然很惊讶mysql对语法错误的描述再详细不过了,我有没有办法建议开发者添加这个特性?