2017-06-01 18 views
0

電子メールテーブルは、以下のコマンドを使用して作成され、現在は〜15000件のレコードがあります。hsqldbデータ例外:文字列データ、文中の右切り捨て

Create table emails (id INTEGER, accountid INTEGER, subject varchar(4000), 
sender varchar(100), sentDate TIMESTAMP, status varchar(10)) 

このテーブルにプライマリキーを追加しようとしています。この目的のために私は

ALTER TABLE emails ADD PRIMARY KEY (ID) 

を実行しています。しかし、このアクションは理由何ができるか

data exception: string data, right truncation in statement [ALTER TABLE emails ADD 
PRIMARY KEY (ID)] 

になるのですか?

+0

テーブル内のすべての「id」は一意であるか、重複して存在する可能性がありますか? –

+0

@TimBiegeleisenはい。それのためのシーケンスがあります。 – Ankur

+0

ユニークでない列を主キーにすると問題が発生する可能性があることを理解していますか? –

答えて

1

理由はいくつかの行で、VARCHAR列の1つに、列の宣言されたサイズより長いデータが含まれているためです。

最長の文字列を検索し、必要に応じて長い列定義を使用してテーブル定義を変更するには、SELECTを使用する必要があります。たとえば、

SELECT MAX (CHAR_LENGTH(status)) FROM emails 

ALTER TABLE emails ALTER COLUMN status SET DATA TYPE VARCHAR(20) 
+0

奇妙な動作。宣言されたサイズよりも長いデータを挿入できるのはなぜですか? – Ankur

+0

HSQLDBのバージョンとデータの挿入方法を報告する必要があります。 – fredt

関連する問題