错误记录
“pg_upgrade_internal.log”: Permission denied
C:\WINDOWS\system32>pg_upgrade.exe -b D:\Master\pgsql_64\bin -B f:\DataBase\pgSQL\bin -d D:\Master\pgsql_64\data\agdata -D f:\DataBase\data -k -ccould not open log file "pg_upgrade_internal.log": Permission denied故障,退出
原因: pg_upgrade 没有在指定目录下执行,所以需要切换到 postgreSQL/bin 目录下执行
例如,我的目录是f:\DataBase\pgSQL
C:\WINDOWS\system32> f:f: cd \DataBase\pgSQL\bin>F:\DataBase\pgSQL\bin>pg_upgrade.exe -b D:\AnalyzeMaster\pgsql_64\bin -B f:\DataBase\pgSQL\bin -d D:\AnalyzeMaster\pgsql_64\data\agdata -D f:\DataBase\data -k -c正在执行一致性检查-----------------------------Checking cluster versions
fe_sendauth: no password supplied
这是一个最常见文问题。
F:\DataBase\pgSQL\bin>pg_upgrade.exe -b D:\Master\pgsql_64\bin -B f:\DataBase\pgSQL\bin -d D:\Master\pgsql_64\data\agdata -D f:\DataBase\data -k -c正在执行一致性检查-----------------------------Checking cluster versions ok连接到数据库失败: fe_sendauth: no password supplied... ...
问题原因:
解决办法:修改原数据库(9.6)中 pg_hba.config 文件配置,具体修改内容如下:
- 文件路径: 原数据库数据目录
- 如下图: 蓝色方框为原有设置,我们进行注释,后买你红色框为添加。

lc_collate不匹配
F:\DataBase\pgSQL\bin>pg_upgrade.exe -b D:\Master\pgsql_64\bin -B f:\DataBase\pgSQL\bin -d D:\Master\pgsql_64\data\agdata -D f:\DataBase\data -k -c正在执行一致性检查-----------------------------Checking cluster versions okChecking database user is the install user okChecking database connection settings okChecking for prepared transactions okChecking for reg* data types in user tables okChecking for contrib/isn with bigint-passing mismatch okChecking for tables WITH OIDS okChecking for invalid "sql_identifier" user columns okChecking for invalid "unknown" user columns okChecking for hash indexes ok数据库"postgres"的lc_collate不匹配: 旧的 "C", 新的 "en_US.UTF-8"故障,退出
原因,这是旧数据的设置选项和新的数据库的 lc_collate不一致,这个是在 initdb 时设置的,旧的我们不能修改,新的我们重新设置。
这里,我们新的服务未启动,直接删除 f:\DataBase\data 下的所有数据,然后再次执行:
F:\DataBase\pgSQL\bin>initdb -E UTF8 -D f:\DataBase\data -U postgres -W --locale=C属于此数据库系统的文件宿主为用户 "postgres".此用户也必须为服务器进程的宿主.数据库簇将使用本地化语言 "C"进行初始化.缺省的文本搜索配置将会被设置到"english"禁止为数据页生成校验和.... ...
新安装中缺少的可加载库
... ...Checking for invalid "sql_identifier" user columns okChecking for invalid "unknown" user columns okChecking for hash indexes okChecking for presence of required libraries 致命的您的安装引用了新安装中缺少的可加载库。您可以将这些库添加到新安装中,或者从旧安装中删除使用它们的函数。文件中有问题库列表:loadable_libraries.txt
我们打开新数据库 bin 目录,查看该文件内容:

我的打开是如下内容:
无法加载库 "MyFileExtension": ERROR: could not access file "MyFileExtension": No such file or directoryIn database: fs6600
这是旧库中一些自定义共享对象文件(或者 DLL),需要拷贝到新库中,所以我需要把原数据库 lib 中的 MyFileExtension 拷贝到新目录下的 f:\DataBase\data\lib 中。
