Postgresql
Postgres 9.3 更改了 standard_conforming_strings 值
我正在將舊應用程序的數據庫從 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
並重新載入。此外, a
pg_dump
沒有透露任何內容。轉儲中的設置僅適用於轉儲。要查看數據庫的目前設置,請執行:SHOW standard_conforming_strings;
或從以下位置獲取更多詳細資訊
pg_settings
:SELECT * FROM pg_settings WHERE name = 'standard_conforming_strings';
一般來說,嘗試遠離是一個非常糟糕的主意
standard_conforming_strings
。Postgres 9.1對此進行了更改,這是有充分理由的。它遲早會咬你。更新到目前(高級)標準。
你可以使用alter命令。
ALTER USER your_login_name SET STANDARD_CONFORMING_STRINGS TO OFF;
ALTER DATABASE
也可以在這裡使用,但由於符合標準的字元串更易於使用,因此最好將舊樣式限制為遺留使用者。更好的方法是在需要
e
時為轉義字元串添加前綴。