簡體   English   中英

CodeIgniter 與 PostgreSQL 和 PgBouncer 處於事務模式

[英]CodeIgniter with PostgreSQL and PgBouncer in Transaction mode

以前我們在會話模式下使用帶有 PgBouncer 的 PostgreSQL 9,這樣可以輕松創建新記錄並使用db->insert_id('table', 'pk_column')獲取最后一個 ID。

但是使用PgBouncer的Session模式給我們帶來了極大的問題,每秒操作幾次,Pool很容易達到連接的容量,所以我們切換到PostgreSQL 12和PgBouncer的Transaction模式。

這種模式開始出現的一個問題是,使用需要在同一會話中的操作不起作用,不允許使用insert_id()使用的CURRVAL

CodeIgniter 3 創建的 INSERT 示例:

INSERT INTO "table" ("column") VALUES ('ABC');
SELECT pg_get_serial_sequence('table', 'tableid') AS seq;
SELECT CURRVAL('public.table_tableid_seq') AS ins_id;

此代碼將觸發錯誤:

currval has not yet been defined this session

是否必須在 CodeIgniter 中完成任何配置才能在事務模式下與 PgBouncer 一起使用?

確保所有這些語句都在單個數據庫事務中運行,那么應該沒有問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM