首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >火鸟2.5查询返回字符集UTF8_CI_AI_NUMERIC_SORT的排序规则UTF8未安装

火鸟2.5查询返回字符集UTF8_CI_AI_NUMERIC_SORT的排序规则UTF8未安装
EN

Stack Overflow用户
提问于 2021-08-30 16:43:04
回答 1查看 562关注 0票数 1

我有一个旧的源数据库,显然是在其中创建了自定义排序规则UTF8_CI_AI_NUMERIC_SORT。我是通过图像jacobalberty/firebird:2.5-ss在码头上运行的。数据库最初是在Windows机器上创建的。

当我试图对使用此排序规则的表执行查询时,会得到以下错误:

代码语言:javascript
复制
SQL> select * from "InvoiceService";
Statement failed, SQLSTATE = 22021
COLLATION UTF8_CI_AI_NUMERIC_SORT for CHARACTER SET UTF8 is not installed

显示排序规则返回以下内容:

代码语言:javascript
复制
SQL> show collations;
UTF8_CI_AI_NUMERIC_SORT, CHARACTER SET UTF8, FROM EXTERNAL ('UNICODE'), CASE INSENSITIVE, ACCENT INSENSITIVE, 'NUMERIC-SORT=1'

我尝试了以下修复方法:

将条目添加到fbintl.conf

代码语言:javascript
复制
<charset UTF8>
    intl_module fbintl
    collation   UTF8_CI_AI_NUMERIC_SORT
</charset>

然后运行sp_register_character_set("UTF8", 4)过程,并接收有关重复排序规则的错误(因为UTF8_CI_AI_NUMERIC_SORT已经在DB中定义)。

  1. 下拉排序规则

代码语言:javascript
复制
SQL> drop collation UTF8_CI_AI_NUMERIC_SORT;
Statement failed, SQLSTATE = 42000
unsuccessful metadata update
-Collation UTF8_CI_AI_NUMERIC_SORT is used in table InvoiceService (field name NAME) and cannot be dropped

  1. 添加使用不同排序规则的新列,但无法添加:

代码语言:javascript
复制
SQL> ALTER TABLE "InvoiceService" ADD NAME2 VARCHAR(600) CHARACTER SET UTF8;
Statement failed, SQLSTATE = 22021
unsuccessful metadata update
-InvoiceService
-COLLATION UTF8_CI_AI_NUMERIC_SORT for CHARACTER SET UTF8 is not installed

  1. 只使用gbak还原元数据,修复模式,然后只插入数据,但gbak不支持只还原数据,只支持

..。

我现在没有主意了。我还能做什么呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-31 09:32:32

所以,我终于解决了这个问题。我所做的是创建一个DB备份

代码语言:javascript
复制
gbak -v -t -user SYSDBA /path/to/source.fdb /path/to/backup.fbk

然后将Docker映像的3.0版本与Firebird (jacobalberty/firebird:3.0)一起使用,然后用

代码语言:javascript
复制
gbak -create /path/to/backup.fbk /path/to/restored3.fdb

请注意,没有切换Docker映像的相同备份还原过程无法工作。

我没必要做任何其他的事。在SHOW COLLATIONS;输出方面,只有细微的差别:

代码语言:javascript
复制
// originally:
UTF8_CI_AI_NUMERIC_SORT, CHARACTER SET UTF8, FROM EXTERNAL ('UNICODE'), CASE INSENSITIVE, ACCENT INSENSITIVE, 'NUMERIC-SORT=1'

// restored DB
UTF8_CI_AI_NUMERIC_SORT, CHARACTER SET UTF8, FROM EXTERNAL ('UNICODE'), CASE INSENSITIVE, ACCENT INSENSITIVE, 'COLL-VERSION=58.0.6.50;NUMERIC-SORT=1'
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68987597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档