2010-12-03 21 views
5

のために、私は以下の表SQLエラー:ORA-12899:値が大きすぎる列

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) 

私は、次のエラーメッセージが表示されます。

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

私は意味がありませんが、私はそれを言います。このエラーが何を意味するのか尋ねなければならない場合は、プロのプログラマーになる準備ができていない可能性があります。これは非常に明確なエラーメッセージで、私が遭遇したエラーメッセージの約95%よりはるかに明確です。 – HLGEM

答えて

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

エラーが何であるかがわかります。アドレスは最大20文字を保持でき、25文字を渡します。

+1

ありがとうございました。それは助けた – David

+1

また、Post_Codeに8文字を渡している。 –

8

前述のように、エラーメッセージは正確な問題を示しています.20文字を保持するフィールドに25文字を渡しています。また、列をより正確に定義することも考えてください。 VARCHAR2列に特定のバイト数または文字数を格納するかどうかを定義できます。将来、フィールドにマルチバイト文字を挿入しようとすると問題が発生する可能性があります。例えば、これは5文字ですが、5バイトには収まらないでしょう。

ここは例です:

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

または

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

この答えはまだ彼らが古い場合でも、ORA-12899および上記以外の有用なコメントたくさんのリストに高いアップします。最も参考になったコメントは、データを読み込むときになぜこのようになっているのかを調べるプロフェッショナルのための#4でした。

一部の文字の長さは1バイトを超えていますが、SQL Serverでは特にそうです。そして、SQLServerのvarchar(20)に収まるものは、Oracleのvarchar2(20)に似ていません。

昨日、SSISでOracleデータベースにAttunityドライバをロードすると、このエラーが発生しました。

-1

例:1と2の表は、

1テーブルのエントリを削除し、選択も2台の記録なし1つの表に挿入可能です。テーブルを削除してもテーブルが1つもない2番目のテーブルレコードがありませんemp id is not availableこのエラーが発生したことを意味します

関連する問題