gpt4 book ai didi

postgresql - 临时表创建在 jasperserver 中不起作用(无法在只读事务中执行 CREATE TABLE)

转载 作者:行者123 更新时间:2023-11-29 12:17:56 25 4
gpt4 key购买 nike

我在 postgres 中有一个带有临时表的函数。

create or replace function sp_test_function()
returns table (id integer,enqu_id integer) as
$BODY$
BEGIN

create temporary table temp_table(
id serial,
enquiry_id integer

) on commit drop;

insert into temp_table(enquiry_id) select enquiry_id from sales_enquiry;

return query select t.id,enquiry_id from temp_table t;

END;
$BODY$
language plpgsql;

我在 jasper 中有一份报告,并使用上述函数获取数据。当我从服务器运行报告时出现此错误 cannot execute CREATE TABLE in a read-only transaction 时出现的问题。我尝试了 SET TRANSACTION READ WRITE

$BODY$
BEGIN
SET TRANSACTION READ WRITE
create temporary table temp_table(
id serial,
enquiry_id integer

) on commit drop

但是又遇到了另一个错误在任何查询之前必须设置事务读写模式。如何在 postgres 函数中设置事务?

最佳答案

终于找到答案了。

第 1 步:打开 context.xml 文件(C:\Jaspersoft\jasperreports-server-cp-5.5.0\apache-tomcat\webapps\jasperserver\META-INF\context.xml)

在该文件中添加以下代码(我正在使用 postgresql db)

<Resource name="jdbc/your_db_name" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="db_username" password="db_password"
driverClassName="org.postgresql.Driver"
validationQuery="SELECT 1"
testOnBorrow="true"
url="jdbc:postgresql://127.0.0.1:5432/ur_db_name?useUnicode=true&amp;characterEncoding=UTF-8&amp;autoReconnect=true&amp;autoReconnectForPools=true" factory="com.jaspersoft.jasperserver.tomcat.jndi.JSBasicDataSourceFactory"/>

步骤:2 打开 web.xml (C:\Jaspersoft\jasperreports-server-cp-5.5.0\apache-tomcat\webapps\jasperserver\WEB-INF\web. xml)

添加以下代码

<resource-ref>
<description>some_description</description>
<res-ref-name>jdbc/ur_db_name</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

第 3 步:重新启动您的 jasperserver

第 4 步:登录到 jasper 服务器 并添加新数据源。从下拉列表中选择 JNDI Data Source 而不是 JDBC Data Source

在文本框字段 Service Name (required): 中键入 jdbc/ur_db_name 。然后单击 Test Connection 您会在顶部看到一条弹出消息 Connection Passed。就是这样 现在您可以在报告中使用此 datasource。希望这会有所帮助。

关于postgresql - 临时表创建在 jasperserver 中不起作用(无法在只读事务中执行 CREATE TABLE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42903118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com