zoukankan      html  css  js  c++  java
  • Oracle :value too large for column "SCHEMA"."TABLE"."COLUMN" (actual: 519, maximum: 500)的解决方案

    原因:我是使用 CREATE TABLE XXX AS subquery 进行创建的数据表,主要是将相关的数据聚合在一起,然后通过导出为SQL脚本文件,进行导入到新库中,导致部分INSERT INTO语句,因数据库字符集的不一致生成的CREATE TABLE表结构的字段类型长度不一致,从而会插入失败value too large for column "SCHEMA"."TABLE"."COLUMN" (actual: 519, maximum: 500) ;因为长度不兼容

    解决方法就是在对应SELECT的出错字段上,使用CONVERT转换字符集或者使用CAST将类型的长度设置大点,然后CREATE TABLE会根据你设置的字段类型为表结构的类型;但是使用CONVERT转换字符集后,进行查询会导致 ORA-29275: partial multibyte character 错误。

    所以我这边解决的方式是使用CAST转换类型吧

    CREATE TABLE XXX AS

    SELECT CAST(col AS VARCHAR(1000)),... FROM xxx;

    CAST函数文档:https://docs.oracle.com/database/121/SQLRF/functions024.htm#SQLRF00613

    使用CONVERT函数示例:

    CREATE TABLE XXX AS

    SELECT CONVERT(col,'AL32UTF8'),... FROM xxx;

    CONVERT函数文档:https://docs.oracle.com/database/121/SQLRF/functions041.htm#SQLRF00620

    如果只执行CONVERT的SELECT子句,会出错 ORA-29275: partial multibyte character ,但是 CREATE TABLE XXX AS SELECT 一起执行,不会出错,但是查询生成的表也会报错ORA-29275。

    复制请注明出处,在世界中挣扎的灰太狼
  • 相关阅读:
    最小生成树(模板)
    排序
    kmp模板
    图书管理系统
    顺序表的创建
    洛谷p1090合并果子(优先队列或堆)
    洛谷P1464Function(逆向递推递归+记忆化)
    ueditor设置
    php isset()和 in_array()
    php 判断空
  • 原文地址:https://www.cnblogs.com/XingXiaoMeng/p/15722886.html
Copyright © 2011-2022 走看看