[英]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.