GVKun编程网logo

ant sql insert语句在'-'字符串上失败。解决方法?

6

最近很多小伙伴都在问antsqlinsert语句在'-'字符串上失败。解决方法?这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展2020-04-06:insert语句在mysql里

最近很多小伙伴都在问ant sql insert语句在'-'字符串上失败。解决方法?这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展2020-04-06:insert语句在mysql里经历了什么?、ant sql insert语句在'-'字符串上失败解决方法?、AssertContains 在 jUnit 中的字符串上、INSERT INTO语句在使用mySQL的NodeJS中不起作用等相关知识,下面开始了哦!

本文目录一览:

ant sql insert语句在'-'字符串上失败。解决方法?

ant sql insert语句在'-'字符串上失败。解决方法?

语境

我们正在更改安装脚本,以使用ant的“ sql”任务和jdbc而不是专有的sql客户端sqlplus(oracle)和osql(msft)。

更新:添加了更多上下文。我们的“基础数据”(种子数据)由一组.sql文件组成,这些文件包含“供应商中立”(即,在oracle和mssql中均有效)sql语句。

问题

脚本运行正常,但有一个例外:

此sql在Oracle中失败。具体来说,某些东西(ant或jdbc驱动程序)将破折号/连字符视为“注释的开头”,即使它们已嵌入在字符串中。请注意,同一个sql可以与ant
/ sql和Microsoft的jdbc驱动程序配合使用。

INSERT INTO email_client (email_client_id,generated_reply_text) VALUES(100002,''----- Original Message -----'');

相关错误

该蚂蚁错误似乎可以识别问题。由于它仍处于开放状态(8年后),所以我不希望很快得到修复。但是,因为问题仅出现在oracle中,所以可能是由驱动程序造成的。

oracle驱动程序:jdbc瘦驱动程序,版本10.2.0.1.0

问题

有没有人可以同时在mssql和oracle中使用的解决方法?(例如,更改有问题的行以定义转义字符?在“插入” sql92语法中看不到“转义”)

谢谢

答案1

小编典典

查看“ SQLExec”源并打开详细日志记录后,我找到了一种解决方法:

解决方法

如果sql语句包含一个包含“-”的字符串,请将定界符(分号)放在下一行。

失败了

INSERT INTO email_client (email_client_id,generated_reply_text) VALUES(100002,''----- Original Message -----'');

成功

请注意,分号在单独的行上

INSERT INTO email_client (email_client_id,generated_reply_text) VALUES(100002,''----- Original Message -----'');

细节

打开详细的日志记录,我看到当Ant遇到有问题的sql语句时,它实际上一次将三个sql语句传递给了jdbc驱动程序。令人反感的语句,下一个语句(也包含嵌入式“-”)和后续语句(不包含嵌入式“-”)。

我快速浏览了Ant代码,没有看到任何明显的错误。由于我不打算修补Ant,因此我寻找了一种解决方法。

进行调整后,我发现,如果我只是将分隔符(分号)移至嵌入了“-”的语句的下一行,则脚本将成功执行。

谢谢大家的参与

2020-04-06:insert语句在mysql里经历了什么?

2020-04-06:insert语句在mysql里经历了什么?

评论

ant sql insert语句在'-'字符串上失败解决方法?

ant sql insert语句在'-'字符串上失败解决方法?

如何解决ant sql insert语句在''-''字符串上失败解决方法??

查看“ sqlExec”源并打开详细日志记录后,我找到了一种解决方法:

如果sql语句包含一个包含“-”的字符串,请将定界符(分号)放在下一行。

INSERT INTO email_client (email_client_id,generated_reply_text) VALUES(100002,''----- Original Message -----'');

请注意,分号在单独的行上

INSERT INTO email_client (email_client_id,generated_reply_text) VALUES(100002,''----- Original Message -----'')
;

打开详细的日志记录,我看到当Ant遇到有问题的sql语句时,它实际上一次将三个sql语句传递给了jdbc驱动程序。令人反感的语句,下一个语句(也包含嵌入式“-”)和后续语句(不包含嵌入式“-”)。

我快速浏览了Ant代码,没有看到任何明显的错误。由于我不打算修补Ant,因此我寻找了一种解决方法。

进行调整后,我发现,如果我只是将分隔符(分号)移至嵌入了“-”的语句的下一行,则脚本将成功执行。

谢谢大家的参与

解决方法

语境

我们正在更改安装脚本,以使用ant的“ sql”任务和jdbc而不是专有的sql客户端sqlplus(oracle)和osql(msft)。

更新:添加了更多上下文。我们的“基础数据”(种子数据)由一组.sql文件组成,这些文件包含“供应商中立”(即,在oracle和mssql中均有效)sql语句。

问题

脚本运行正常,但有一个例外:

此sql在Oracle中失败。具体来说,某些东西(ant或jdbc驱动程序)将破折号/连字符视为“注释的开头”,即使它们已嵌入在字符串中。请注意,同一个sql可以与ant
/ sql和Microsoft的jdbc驱动程序配合使用。

INSERT INTO email_client (email_client_id,generated_reply_text) VALUES(100002,''----- Original Message -----'');

相关错误

该蚂蚁错误似乎可以识别问题。由于它仍处于开放状态(8年后),所以我不希望很快得到修复。但是,因为问题仅出现在oracle中,所以可能是由驱动程序造成的。

oracle驱动程序:jdbc瘦驱动程序,版本10.2.0.1.0

问题

有没有人可以同时在mssql和oracle中使用的解决方法?(例如,更改有问题的行以定义转义字符?在“插入” sql92语法中看不到“转义”)

谢谢

AssertContains 在 jUnit 中的字符串上

AssertContains 在 jUnit 中的字符串上

有没有更好的方法在 jUnit 中编写

String x = "foo bar";
Assert.assertTrue(x.contains("foo"));

INSERT INTO语句在使用mySQL的NodeJS中不起作用

INSERT INTO语句在使用mySQL的NodeJS中不起作用

实际上是我自己找到答案的。我试图使用一个对象,认为这些值将被放入语句中。只需使用Object.values创建一个新变量,然后将其放入数据库函数即可。

今天的关于ant sql insert语句在'-'字符串上失败。解决方法?的分享已经结束,谢谢您的关注,如果想了解更多关于2020-04-06:insert语句在mysql里经历了什么?、ant sql insert语句在'-'字符串上失败解决方法?、AssertContains 在 jUnit 中的字符串上、INSERT INTO语句在使用mySQL的NodeJS中不起作用的相关知识,请在本站进行查询。

本文标签: