升级pg库时,主要是postgres和template1两个库的lc_collate要相同。 不相同,只能重新创建了。
psql -h 127.0.0.1 -U postgres -p 5432 (1)默认是postgres库,先把template1干掉,重建。 ------------------------- ALTER database template1 is_template=false;
DROP database template1;
CREATE DATABASE template1 WITH OWNER = postgres ENCODING = 'UTF8' TABLESPACE = pg_default LC_COLLATE = 'C' LC_CTYPE = 'C' CONNECTION LIMIT = -1 TEMPLATE template0;
ALTER database template1 is_template=true; ------------------------- (2)然后切到template1,再干掉postgres库,重建 \c template1 DROP DATABASE postgres; CREATE DATABASE postgres LC_COLLATE 'C' LC_CTYPE 'C' TEMPLATE template0; (3)重启db (4)查询:SHOW LC_COLLATE; ============================================ 升级步骤: (1)9和13的db都停止。 (2)设置变量,这是新库的密码 set PGPASSWORD=123456 我的旧库没有密码 (3)执行命令 pg_upgrade -b "D:\Program Files (x86)\xxx\pgsql\bin" -B "E:\Program Files\PostgreSQL\13\bin" -d "D:\Program Files (x86)\xxx\data" -D "E:\Program Files\PostgreSQL\13\data" -U postgres -p 5432 -P 5433 -o " -h 127.0.0.1" -O "-h 127.0.0.1" 具体参数意义,执行pg_upgrade --help
|