DM数据库SQL报错之记录超长
本文于 11 天前发布,最后更新于 10 天前

一、问题描述

达梦数据库在初始化实例时会有一个参数PAGE_SIZE即页大小,默认是8K。

配置不同的页大小,字段所支持的存储长度会有所不同,会有如下限制

数据库页大小 每个字符类型字段实际最大长度(字节) 每行记录最大字段外其他字段总长度(字节) 表空间单个数据文件最小 (MB)/最大 (MB)
4 KB 1938 2047 16/8388608
8 KB 3878 4095 32/16777216
16 KB 8000 8195 64/33554432
32 KB 8188 16176 128/67108864

当表中一行记录所以字段长度之和占用页大小的一半时就会出现记录超长的报错。

二、问题解决

考虑到实际场景,解决方法有如下几种:

  1. 找到表中VARCHAR类型比较长的字段(如 VARCHAR(8000) 这种),修改成 TEXT 类型。
  2. 重新初始化数据库,把页大小配置成32KB。这是一个底层参数,在数据库生命周期内都不能更改,所以必须重新初始化。(对于表中 varchar2 类型较长,并且字段较多的情况不太适合,这种情况采用方法1解决)
  3. 尝试给表启用超长记录:ALTER TABLE 模式名.表名 ENABLE USING LONG ROW;

注意
方法1中TEXT大字段是不参与问题描述中的长度计算的,大字段长度能够达到 2 GB。但是要注意,大字段的使用和普通字段是有区别的。

暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇