gpt4 book ai didi

java - 即使字符串长度由于日语字符而小于 250 个字符,值对于列错误也太大

转载 作者:行者123 更新时间:2023-12-02 02:12:35 32 4
gpt4 key购买 nike

我通过java代码插入数据,方法是从一个数据库获取数据,然后使用它自己的API将其插入到其他系统中。我在将该字符串设置为记录名称之前打印字符串的大小,并进行了检查,如果它超过 250 个字符,则将其修剪为 250 个字符。因此,java 代码中的 name 变量总是打印长度为 250 或小于该长度,具体取决于列值的长度。尽管它总是小于或等于 250 个字符,但我仍然收到错误

ORA-12899: value too large for column "OWNER"."PROJECT"."NAME" (actual: 515, maximum: 250)

目标数据库列的数据类型为 varchar(250 Byte)

enter image description here

如果名称列包含日语或非英语字符,我会遇到此问题?有谁知道如何在代码级别防止它发生?

附注数据库是Oracle 12c

由于某些限制,我无法显示代码。但我已经双重验证了代码,它似乎可以很好地设置仅包含英文字符的名称。

最佳答案

非英文字符在 Oracle DB 中按 2 个字节存储:https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:9528307800346242780所以你的问题可能是 250 个字符是 UTF-8 编码的非英语字符,因此需要 2 字节存储。因此溢出。

解决方案可能是将列长度的定义更改为 250 个字符,而不是 250 个字节。

关于java - 即使字符串长度由于日语字符而小于 250 个字符,值对于列错误也太大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49779657/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com