Ошибка SQL: ORA-12899: слишком большое значение для столбца - PullRequest
5 голосов
/ 03 декабря 2010

Я создал следующую таблицу

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)

И в настоящее время я пытаюсь использовать оператор INSERT VALUES. Я написал следующее заявление

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

Когда я пытаюсь запустить оператор, он выдает мне следующее сообщение об ошибке.

Ошибка запуска в строке 4 в команде: INSERT INTO Клиенты ЦЕННОСТИ (501623129, «Дэвид Паттерсон», '30 Singleton Close London ',' SW17 9JY ', 02082860642) Сообщение об ошибке: SQL Ошибка: ORA-12899: слишком большое значение для колонка "DJ". "ЗАКАЗЧИКИ". "АДРЕС" (фактическое: 25, максимальное: 20) 12899. 00000 - «слишком большое значение для столбца% s (фактическое:% s, максимальное:% s)»

Ответы [ 4 ]

18 голосов
/ 03 декабря 2010
ORA-12899: value too large for column "DJ"."CUSTOMERS"."ADDRESS" (actual: 25, maximum: 2

Сообщает вам, в чем заключается ошибка.Адрес может содержать не более 20 символов, вы передаете 25 символов.

8 голосов
/ 03 декабря 2010

Как уже упоминалось, сообщение об ошибке показывает вам точную проблему: вы передаете 25 символов в поле, настроенное для хранения 20. Возможно, вы захотите определить столбцы немного более точно.Вы можете определить, будет ли столбец VARCHAR2 хранить определенное количество байтов или символов.В будущем вы можете столкнуться с проблемой, когда вы попытаетесь вставить многобайтовый символ в поле, например, его длина составляет 5 символов, но он не уместится в 5 байтов:пример:

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

или

CREATE TABLE Customers(CustomerID  VARCHAR2(9 CHAR), ...
2 голосов
/ 10 декабря 2015

Этот ответ по-прежнему занимает высокое место в списке для ORA-12899 и многих бесполезных комментариев выше, даже если они старые. Самый полезный комментарий был # 4 для любого профессионала, пытающегося выяснить, почему они получают это при загрузке данных.

Некоторые символы имеют длину более 1 байта, особенно это касается SQL Server. И то, что может поместиться в varchar (20) в SQLServer, не будет вписываться в аналогичный varchar2 (20) в Oracle.

Вчера я столкнулся с этой ошибкой, когда SSIS загружал базу данных Oracle с драйверами Attunity, и подумал, что спасу людей некоторое время.

0 голосов
/ 29 сентября 2016

пример: доступны таблицы 1 и 2

1 таблица удаляет запись, выбирает ни 2 записи таблицы и вставляет в таблицу 1.когда время удаления таблицы no 1 не имеет записей второй таблицы, например, emp id недоступен означает, что эти ошибки появились

...