2010-12-03 13 views
5

He creado la siguiente tablaSQL error: ORA-12899: valor demasiado grande para la columna

CREATE TABLE Customers(
    CustomerID varchar2(9) PRIMARY KEY, 
    Customer_Contact varchar2(40) NOT NULL, 
    Address varchar2(20) NOT NULL, 
    Post_Code varchar2(7) NOT NULL, 
    Telephone_Number varchar2(11) NOT NULL) 

y actualmente estoy tratando de utilizar el insertar valores comunicado. He escrito la siguiente declaración

INSERT INTO Customers VALUES(
    501623129, 
    'John Petterson', 
    '-- Singleton Close London', 
    '--- ---', 02082860222) 

Cuando intento ejecutar la declaración me da el siguiente mensaje de error.

Error starting at line 4 in command: INSERT INTO Customers VALUES(501623129, 'David Patterson', '30 Singleton Close London', 'SW17 9JY', 02082860642) Error report: SQL Error: ORA-12899: value too large for column "DJ"."CUSTOMERS"."ADDRESS" (actual: 25, maximum: 20) 12899. 00000 - "value too large for column %s (actual: %s, maximum: %s)"

+13

No me gusta ser grosero, pero tengo que decirlo. Si tiene que preguntar qué significa este error, entonces quizás no esté listo para ser un programador profesional. Este es un mensaje de error extremadamente claro, mucho más claro que el 95% de los mensajes de error que he encontrado. – HLGEM

Respuesta

18
ORA-12899: value too large for column "DJ"."CUSTOMERS"."ADDRESS" (actual: 25, maximum: 2 

le dice lo que es el error. La dirección puede contener un máximo de 20 caracteres, está pasando 25 caracteres.

+1

Gracias por la respuesta. Ayudó a – David

+1

Además, está pasando 8 caracteres a Post_Code. –

8

Como se mencionó, el mensaje de error muestra el problema exacto: está pasando 25 caracteres en un campo configurado para contener 20. También puede considerar definir las columnas con un poco más de precisión. Puede definir si la columna VARCHAR2 almacenará una cierta cantidad de bytes o caracteres. Puede encontrar un problema en el futuro en el que intente insertar un carácter de varios bytes en el campo, por ejemplo, tiene 5 caracteres pero no cabe en 5 bytes: 'ÀÈÌÕÛ'

Aquí hay un ejemplo :

CREATE TABLE Customers(CustomerID VARCHAR2(9 BYTE), ... 

o

CREATE TABLE Customers(CustomerID VARCHAR2(9 CHAR), ... 
2

Esta respuesta todavía viene en lo alto de la lista para ORA-12899 y la gran cantidad de comentarios útiles no por encima, incluso si son de edad. El comentario más útil fue el # 4 para cualquier profesional que intente averiguar por qué lo están recibiendo al cargar datos.

Algunos caracteres tienen más de 1 byte de longitud, especialmente en SQL Server. Y lo que cabría en un varchar (20) en SQLServer no cabría en un varchar2 (20) similar en Oracle.

Ayer encontré este error con SSIS cargando una base de datos Oracle con los controladores de Attunity y pensé que iba a ahorrarle algo de tiempo.

-1

ejemplo: 1 y 2 de la mesa está disponible

1 mesa de borrar el registro y seleccione 2 ni registros de la tabla e insertar a ninguna tabla 1. cuando elimine el tiempo, no hay 1 tabla que no tenga registros de la segunda tabla, ejemplo, id no disponible significa que este error apareció

Cuestiones relacionadas