【问题标题】:Intersystems Cache Unexpected error occurred: <WIDE CHAR>发生系统间缓存意外错误:<WIDE CHAR>
【发布时间】:2012-05-14 17:19:42
【问题描述】:

我正在尝试将旧的 CACHE.DAT 数据库加载到 Intersystems Cache(2012.1.1 win32 评估)中。我已经设法创建了一个命名空间和数据库,并且能够查询一些数据库表。

但是,对于其他表,我收到以下错误:

ERROR #5540: SQLCODE -400 Message: Unexpected error occurred: <WIDE CHAR>

文档告诉我,这意味着在需要一个字节字符的地方读取一个多字节字符。我怀疑这可能意味着原始数据库是 UTF-16,而我的新安装使用的是 UTF-8。

我的问题是:有没有办法转换数据库,配置缓存以便它可以处理,或者以其他方式处理这个问题?

【问题讨论】:

    标签: unicode intersystems-cache widechar intersystems


    【解决方案1】:

    可能原始数据库是在 unicode 安装中创建的 和当前安装 8 位

    Caché 在本应为 1 字节字符的地方读取多字节字符。

    【讨论】:

    • 我也是这么想的。我知道 Caché 曾经在安装过程中询问您是否需要 Unicode,但在 2012.1.1 的安装过程中没有出现这个问题。
    • 您可以从旧实例中查看区域设置吗? zw ^%SYS("LOCALE") 与新安装或来自 url localhost:57772/csp/sys/mgr/%25CSP.UI.Portal.NLS.cls 的比较
    • 不,我无法访问旧实例。新实例报告“enu8”,这似乎是 latin1 语言环境...
    • enu8 用于 8bit 实例,尝试在 enuw 上更改
    • 也发现了这一点。尝试更改为“enuw”,Cache 抱怨此语言环境不可用。我猜是因为 Windows 安装默认为非 Unicode。我安装了 Linux 版本(“自定义”安装选项可用,允许我安装 Unicode 实例),一切都在这个平台上运行。问题解决了,虽然很高兴知道如何在 Windows 上安装 enuw。
    【解决方案2】:

    您可以从 mgr 目录发送您的 cboot.log 吗?
    例如我的 cboot.log 中的第一行

    Start of Cache initialization at 02:51:00PM on Apr 7, 2012  
    Cache for Windows (x86-64) 2012.2 (Build 549U) Sun Apr 1 2012 17:34:18 EDT  
    Locale setting is rusw  
    Source directory is c:\intersystems\ensemble12\mgr\utils\  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-08
      相关资源
      最近更新 更多