恢复数据库时找不到排序规则

Posted 瀚高PG实验室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了恢复数据库时找不到排序规则相关的知识,希望对你有一定的参考价值。

目录
环境
症状
问题原因
解决方案

环境
系统平台:Microsoft Windows (64-bit) 10,Linux x86-64 Red Hat Enterprise Linux 7
版本:4.7.7,5.6.5
症状
由Linux系统安装的标准版V4.7.7升级为windows环境企业版V5.6.5,使用navicat管理工具进行备份恢复时,本地报找不到排序规则的错误,导致恢复失败。

问题原因
因linux系统版本的数据库中自带的排序规则很多,而windows环境下自带的排序规则如下:

因为在创建表时,linux版本的数据库会默认引用排序规则如下:

CREATE

 TABLE "public"."table_name" (

  "code" varchar(10) COLLATE "pg_catalog"."aa_DJ.utf8" DEFAULT NULL,

  "name" varchar(10) COLLATE "pg_catalog"."default" DEFAULT NULL

);

进行恢复时,报错如下:

解决方案
解决方案一:

从linux环境的数据库,升级为linux环境的数据库,不会出现此报错。(最佳选择)

解决方案二:

将备份导出为insert语句的格式,然后恢复到数据库中,此方案耗费时间较长,效率低,请慎重考虑哦。

备份:pg_dump -h localhost -U sysdba(用户名) -p 5866(端口) -d highgo(数据库名) -n test1(模式名) --inserts -f /opt/ds20210114.sql

恢复:pg_dump -h -U user_map -p 5866 -d wsrc -n public -E UTF8–insert -f D:\\ds20210114.sql

以上是关于恢复数据库时找不到排序规则的主要内容,如果未能解决你的问题,请参考以下文章

使用具有神奇记录的多个键进行排序时找不到键路径

将数据库恢复到不同的排序规则

使用 Proguard 构建库时找不到 aapt_rules.txt

使用 DDL 数据库生成代码时找不到函数 - jooq

为啥我的代码在渲染时找不到类?

使用 Wt c++ 时找不到 Postgres 标头