数据库建表的时候明明varchar还没有最大但是提示说长度太长的情况

数据库建表的时候明明varchar还没有最大但是提示说长度太长的情况,第1张

nickname只有50长度,讲道理应该是可以存的但是却提示【Row size to large】

造成这种情况的原因可能是这个表中有其他列的长度太长了,我发现一个表中所有列的varchar的长度的总和最长只能到 16381

所以解决办法就是将其他的varchar长度弄短一点,以腾出空间放新字段

这个提示的意思是没选择数据库。

如果你是使用软件(如navicat、SQL

yog等)来创建数据库的话,先点一下软件左边的数据库名称,选中要创建的表所属数据库,再新建表。

如果是使用命令行创建,则先执行命令:use

数据库名;(如在test数据库中创建表,则输入:use

test后按回车)

数据导入时报ORA-12899错误原因是:由于Oracle字符集不同,汉字占的长度不同造成的。

字符集的意思是插入的数据长度超出字段的设置长度,实际长度并不长。

原因:

中文在ZHS16GBK中占2个字节,在UTF-8中却占3个字节,所以汉字导入UTF-8字符集的数据库就很容易出现字段长度不够。

解决办法:

一个是增加字段长度,还有就是修改字符集。

特别说明:

如果系统中已经存在很多数据,建议修改字段长度,因为修改字符集后原来数据库表中的汉字全部变成乱码。如果一定要修改字符集,必须先导出数据,待到字符集修改后再重新导入这些数据。

具体查看方法:

查看字符集的方法可以用PL/SQL DEVELOP ---->Reports---->DBA---->NLS Database Parameters,结果如下图:

具体解决方法:需要输入如下命令符。

SQL>conn / as sysdba

若此时数据库服务器已启动,则先执行 SHUTDOWN IMMEDIATE 命令关闭数据库服务器,

然后执行以下命令:

SQL>shutdown immediate

SQL>STARTUP MOUNT

SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION

SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0

SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0

SQL>ALTER DATABASE OPEN

SQL>ALTER DATABASE CHARACTER SET ZHS16GBK

ERROR at line 1:ORA-12721: operation cannot execute when other sessions are active

若出现上面的错误,使用下面的办法进行修改,使用INTERNAL_USE可以跳过超集的检查:

SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK

SQL>SHUTDOWN IMMEDIATE

SQL>STARTUP

至此,字符集修改完毕。

扩展资料:

Oracle的解决之道 :在税务部门信息化大集中的规划之下,建立完整的信息化架构,以网格作为统一的基础平台;然后在网格基础平台的基础之上,进行数据集中;最后从数据集中再到应用集中,实现以优化管理为目的,更好地进行业务处理与信息的接通等服务。

整合现有的各种平台、系统和数据,建立一个信息数据总局、省局两级处理的统一的技术平台,需要解决以下的问题:数据的采集、数据的存储和管理、数据的质量控制、数据的灵活展现。

以网格技术构建的基础平台,能够提高硬件的利用率和资源共享,能够使公司可以通过增加成本组件来向外扩张,还可以减少管理需求等。所以,通过网格基础平台,就可以满足数据的采集、存储、管理、展现和控制等需求。

参考资料:中关村-国家税务系统与Oracle的解决之道


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6693314.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存