org.postgresql.util.PSQLException:错误:未终止的美元引号字符串位于或接近“0”$身体$

org.postgresql.util.PSQLException:错误:未终止的美元引号字符串位于或接近“0”$身体$,postgresql,dbunit,Postgresql,Dbunit,我试图在java项目中使用dbunit express在Junit测试中的postgress上创建一些表和函数 我使用这个驱动程序: <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>9.2-1003-jdbc4</version> 但是我得到了这个错误 org.postgresql.util.PSQLExcepti

我试图在java项目中使用dbunit express在Junit测试中的postgress上创建一些表和函数

我使用这个驱动程序:

<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.2-1003-jdbc4</version>
但是我得到了这个错误

org.postgresql.util.PSQLException:错误:“$BODY”处或附近未终止的美元引号字符串$

函数如下所示

CREATE OR REPLACE FUNCTION product_history()
RETURNS trigger AS
$BODY$
BEGIN
INSERT INTO product_history (id, product_id, edit_ts, name, print_provider_id,     description)
    VALUES (nextval('product_history_sequence'), OLD.id, now(), OLD.name,     OLD.print_provider_id, OLD.description);
RETURN NULL;
END;
$BODY$
LANGUAGE plpgsql;

在PGAdmin 1.14.3和DBVisualizer 9.0.8中,create可以正常工作
历史表中包含的
创建函数
代码。ddl
?如果是,错误可能是由
数据库创建者的限制引起的。它在
处拆分从ddl文件读取的语句;
(请参阅。因此,函数被拆分为多个语句,从而干扰了语法


尝试将函数代码移动到一个额外的文件中,并将此文件作为一条语句发送到服务器。

历史表中包含的
创建函数
代码。ddl
?如果是,错误可能是由
数据库创建者的限制引起的。它在
处拆分从ddl文件读取的语句;
(请参阅。因此,函数被拆分为多个语句,从而干扰了语法


尝试将功能代码移动到一个额外的文件中,并将此文件作为一条语句发送到服务器。

听起来好像有什么东西在您的代码到达后端之前更改了它。您能否查看postgresql日志,了解它报告的错误,具体取决于您的配置,它将包括它实际收到的查询,以便我们可以看到发生了什么变化。作为一种解决方法,您可以尝试将美元引号字符串转换为普通字符串。听起来好像有什么东西正在更改您的代码,然后它进入后端。您可以查看postgresql日志中它报告的错误,这取决于您的配置,它将包括它实际收到的查询,以便我们可以看到t已更改。作为一种解决方法,您可以尝试将带美元引号的字符串转换为普通字符串。是的,这就是问题所在。我将项目分叉,将分隔符更改为散列,并将散列放在文件中。这是问题所在。我将项目分叉,将分隔符更改为散列,并将散列放在文件中。它起作用了
CREATE OR REPLACE FUNCTION product_history()
RETURNS trigger AS
$BODY$
BEGIN
INSERT INTO product_history (id, product_id, edit_ts, name, print_provider_id,     description)
    VALUES (nextval('product_history_sequence'), OLD.id, now(), OLD.name,     OLD.print_provider_id, OLD.description);
RETURN NULL;
END;
$BODY$
LANGUAGE plpgsql;