org.postgresql.util.PSQLException: Unterminated string literal 异常解决

记一次开发中遇到的问题,希望可以帮助到其他人。
错误提示如下:

org.postgresql.util.PSQLException: Unterminated string literal started at position 76 in SQL INSERT INTO "public"."demo"("id", "name", "age") VALUES ('2', '柜式离心风机S'-B-1 风量5570m3/h,全压531Pa,功率2.2Kw,转速:1100r/min', '12');
	at org.postgresql.core.Parser.checkParsePosition(Parser.java:1303) ~[postgresql-42.2.10.jar:42.2.10]
	at org.postgresql.core.Parser.parseSql(Parser.java:1210) ~[postgresql-42.2.10.jar:42.2.10]
	at org.postgresql.core.Parser.replaceProcessing(Parser.java:1154) ~[postgresql-42.2.10.jar:42.2.10]
	at org.postgresql.core.CachedQueryCreateAction.create(CachedQueryCreateAction.java:41) ~[postgresql-42.2.10.jar:42.2.10]
	at org.postgresql.core.QueryExecutorBase.createQueryByKey(QueryExecutorBase.java:326) ~[postgresql-42.2.10.jar:42.2.10]
	at org.postgresql.jdbc.PgStatement.executeCachedSql(PgStatement.java:287) ~[postgresql-42.2.10.jar:42.2.10]
	at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:272) ~[postgresql-42.2.10.jar:42.2.10]
	at org.postgresql.jdbc.PgStatement.executeUpdate(PgStatement.java:246) ~[postgresql-42.2.10.jar:42.2.10]

大家注意观察这个SQL

INSERT INTO "public"."demo"("id", "name", "age") VALUES ('2', '柜式离心风机S'-B-1 风量5570m3/h,全压531Pa,功率2.2Kw,转速:1100r/min', '12');

在柜式离心风机S 后面有一个单引号 ‘。这个单引号和前面的单引号形成了一组,导致后面的单引号 SQL不承认。所以要想办法把单引号转义。在MySQL中可以使用 \’ 对单引号进行转义。
但是这种SQL语法在Oracle、SqlServer、postgresql中是不认可的。
经过主动在表内添加 带有单引号的数据,在进行SQL导出发现。SQL中的 ’ 被替换成了 ‘’
对SQL进行了处理之后

INSERT INTO "public"."demo"("id", "name", "age") VALUES ('2', '柜式离心风机S''-B-1 风量5570m3/h,全压531Pa,功率2.2Kw,转速:1100r/min', '12');

单引号替换成两个单引号解决此异常问题。
经测试,MySQL,Oracle,SqlServer,postgresql 都可以用 ‘’ 两个单引号的方式解决。

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值