FBSQLException 键大小超出实现

2023-12-25

create table RHP_EmployeElement (
    amount double precision not null, 
    comment varchar(255), 
    loan blob, 
    element_codeId varchar(30), 
    empPrd_emp_code varchar(255), 
    empPrd_emp_folder_codeId numeric(18,0),
    empPrd_prd_exe_exercice integer, 
    empPrd_prd_exe_fdr_codeId numeric(18,0), 
    empPrd_prd_period integer, 
    primary key (element_codeId,
        empPrd_emp_code, empPrd_emp_folder_codeId, empPrd_prd_exe_exercice,
        empPrd_prd_exe_folder_codeId, empPrd_prd_period)
)

Firebird 2.5.2(页面大小为 4096,UTF8 字符集)生成异常:

org.firebirdsql.jdbc.FBSQLException:GDS 异常。 335544351。 不成功的元数据更新密钥大小超过实现 索引“RDB$PRIMARY43”的限制

我也遇到了关于列名大小的相同限制异常(我认为是 31 个字符)

所有这些限制都是在专业 Hibernate 项目中使用 Firebird 的障碍,是否可以在没有所有这些限制的情况下为 Linux 和 Windows 重建 Firebird 项目?或者是否有其他方法可以打破这些限制。


Firebird 2.0 中的索引 https://www.firebirdsql.org/file/documentation/html/en/refdocs/fblangref25/firebird-25-language-reference.html#fblangref25-ddl-idx-limits以及更高的值受页面大小的限制:索引键不能超过页面大小的 1/4。对于页面大小 4096,这意味着索引键长度最大为 1024 字节,对于页面大小 16384,索引键长度为 4096 字节。

您的主键(及其支持索引)由以下列组成:

  • element_codeId VARCHAR(30)= 30 字节(单字节字符集)或 120 (UTF8)
  • empPrd_emp_code VARCHAR(255)= 255 字节(单字节字符集)或 1020 (UTF8)
  • empPrd_emp_folder_codeId NUMERIC(18,0)= 8 字节
  • empPrd_prd_exe_exercice INTEGER= 4 字节
  • empPrd_prd_exe_folder_codeId 不在名单中,假设是empPrd_prd_exe_fdr_codeId NUMERIC(18,0)= 8 字节
  • empPrd_prd_period INTEGER= 4 字节

这导致总索引键为 309(单字节字符集)或 1164(+ 多列、排序规则等的一些额外字节开销)。带字符集UTF8页面大小 4096 这超出了页面大小规则的 1/4。解决方案是为数据库使用更大的页面大小,或者为数据库使用单字节字符集。VARCHAR列。

至于列名,Firebird 3.0 及更早版本中对象名的当前限制是 31 个字符(类似于 Oracle 的 30 个字节的限制)。扩展此功能的请求(CORE-749 https://github.com/FirebirdSQL/firebird/issues/1124)已在 Firebird 4 中实现。与具有此限制的其他数据库系统一样,您需要使用例如提供显式列名称@Column(name="theshortername")。其他对象也存在类似的选项。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FBSQLException 键大小超出实现 的相关文章

随机推荐

  • C# 语言规范说明:6.2.4 显式引用转换

    正如我在this https stackoverflow com questions 53559287 c sharp foreach on ienumerableilistobject compiles but shouldnt 发布后
  • Gradle项目中IntelliJ IDEA编码问题

    通常情况下 我不会在这里提问 但我面临的问题是如此令人毛骨悚然 我无法再独自对抗 我已经筋疲力尽了 不管怎样 我将描述我所发现的一切 我发现了许多有趣的事情 我想相信这会帮助别人帮助我 软件版本 操作系统 Windows 10 Pro版本
  • 将模型保存为 H5 或 SavedModel 时出现 TensorFlow Hub 错误

    我想使用这个 TF Hub 资源 https tfhub dev google imagenet resnet v1 50 feature vector 3 https tfhub dev google imagenet resnet v1
  • iOS 13 TLS 问题

    我已经安装了 iOS 13 beta 版本并运行了包含大量网络请求的框架 但出现了以下错误 2019 09 19 15 01 33 566811 0200 395 25439 Connection 4 default TLS Trust e
  • 展平 PHP 数组

    假设我有一个包含这些字段的表单 并且无法重命名它们
  • 如何使用 iTextSharp 设置 PDF 段落的字体?

    尝试效仿这个例子here https web archive org web 20211020001758 https www 4guysfromrolla com articles 030911 1 aspx 我添加了以下代码来创建 PD
  • Laravel + Inertia SSR 如何更改默认端口?错误:监听 EADDRINUSE:地址已在使用中 :::13714

    所以我有一个生产站点和一个暂存站点 两者都在 Laravel 上 并使用服务器端渲染 SSR Node js 服务器是 Ubuntu 22 04 1 LTS 我使用 PM2 作为 Node js 的生产流程管理器 当我跑步时pm2 star
  • 手动触发 jQuery 自动完成

    我将 jQuery UI 自动完成与一些 AJAX 结合使用 直到停止输入后才会提取数据 我想做到这样 一旦找到数据 自动完成就会作为搜索结果弹出 但是 只有当我再次开始输入时 这才有效 下拉列表在我输入之前不会触发 因为直到我停止输入后它
  • 除了在Java中获取屏幕尺寸之外,还可以使用其他方式设置全屏

    我想知道是否有一种方法比使用更好Toolkit getDefaultToolkit getScreenSize getHeight getWidth 然后使用它作为 JFrame 的尺寸 然后将 JFrame 设置为undecorated
  • 使用 PHP 脚本转发电子邮件

    我们有一个 cron 的 PHP 脚本 每十分钟检查一次收件箱 该脚本的目的是处理我们提供的短信通知服务的 停止退出 功能 如果脚本发现任何电子邮件开头带有 STOP 一词的电子邮件 我们会从通知数据库中删除该用户 为了覆盖我们的基地 我们
  • 将字符串列表转换为由分隔符分隔的字符串

    将字符串列表转换为字符串的最佳方法是什么 其中值以逗号分隔 String Join myListOfStrings ToArray
  • Java中判断一个字符串是否为整数[重复]

    这个问题在这里已经有答案了 我试图确定字符串数组中的特定项目是否是整数 I am split 中的中缀表达式String形式 然后尝试将结果数组拆分为两个数组 一种用于整数 一种用于运算符 同时丢弃括号和其他杂项 实现这一目标的最佳方法是什
  • WPF ListView 的资源管理器主题?

    如何在 WPF ListView 中获取资源管理器主题 我知道一个答案是 GridView 但这就像Details在 Windows 资源管理器中查看 我需要列表 图块和图标查看主题如资源管理器 我怎样才能得到它 The Windows A
  • 跟踪 Rails 中 ActiveRecord 对象中非持久属性的脏信息

    我有一个继承自 ActiveRecord 的对象 但它有一个未保留在数据库中的属性 例如 class Foo lt ActiveRecord Base attr accessor bar end 我希望能够使用 ActiveModel Di
  • GAC 正在进行编辑流程吗?

    每次我对库类进行编辑时 我都会对其进行编译以获得更新的 DLL 但是为了对使用该库的项目进行有效编辑 我必须执行以下命令 gacutil I
  • 如何使用 Python 通过 XMPP 传输文件?

    我在用着xmpppy http xmpppy sourceforge net 我的 jabber 远程管理机器人的库 但我找不到如何发送 接收文件并将其保存在指定的目录中 文档很差 也没有任何示例 但我真的很想制作它 任何人都可以展示一些示
  • 将自定义表单元素添加到 Adminhtml 表单

    有没有办法将自定义表单元素添加到 Magento Adminhtml 表单中 而不将自定义元素放置在lib Varian folder 我已经找到了本质上是一个的代码Varian Data Form Element factory publ
  • 如何等待Spark服务停止?

    对于我的 Spark API 我正在构建集成测试 有时我想停止并启动 Spark 实例 当我这样做时 有时会遇到这样的问题 我正在创建一个新的 Spark 实例 而旧的实例仍在单独的线程上关闭 了解 Spark 实例何时实际关闭会很有帮助
  • QTcpSocket / QTcpServer 内存管理 / 服务器崩溃

    我正在设计和制作一个服务器 它应该能够每秒处理大约 100 次以上的点击 我从服务器获取的信息只是 HTTP 标头 根据标头中的信息 它将查询数据库 不同线程 中的某些信息 并将最终信息发送回 QTcpServer QTcpServer 创
  • FBSQLException 键大小超出实现

    create table RHP EmployeElement amount double precision not null comment varchar 255 loan blob element codeId varchar 30