Postgresql

Postgres 9.3 更改了 standard_conforming_strings 值

  • January 7, 2022

我正在將舊應用程序的數據庫從 Postgres 8.1 遷移到 Postgres 9.3

為了避免兼容性問題,我想將standard_conforming_strings參數保留為 8.1: 中的預設值off

因此,我在架構中使用以下內容創建數據庫:

SET standard_conforming_strings = off;

但是數據庫的 pg_dump 顯示 Postgres 已將值更改為on.

SET standard_conforming_strings = on;

我怎樣才能防止這種情況?

你到底是怎麼設置的standard_conforming_strings

如果您在會話中這樣做,它僅適用於該會話。對於永久設置,請更改postgresql.conf並重新載入。

此外, apg_dump沒有透露任何內容。轉儲中的設置僅適用於轉儲。要查看數據庫的目前設置,請執行:

SHOW standard_conforming_strings;

或從以下位置獲取更多詳細資訊pg_settings

SELECT * FROM pg_settings WHERE name = 'standard_conforming_strings';

一般來說,嘗試遠離是一個非常糟糕的主意standard_conforming_stringsPostgres 9.1對此進行了更改,這是有充分理由的。它遲早會咬你。更新到目前(高級)標準。

你可以使用alter命令。

 ALTER USER your_login_name SET STANDARD_CONFORMING_STRINGS TO OFF;

ALTER DATABASE也可以在這裡使用,但由於符合標準的字元串更易於使用,因此最好將舊樣式限制為遺留使用者。

更好的方法是在需要e時為轉義字元串添加前綴。

引用自:https://dba.stackexchange.com/questions/71681