2017-06-01 5 views
0

E-Mail-Tabelle wurde mit folgendem Befehl erstellt und derzeit hat es rund ~ 15000 Datensätze.hsqldb Daten Ausnahme: Zeichenfolge Daten, Recht Abschneiden in Anweisung

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

Jetzt versuche ich, Primärschlüssel auf dieser Tabelle hinzuzufügen. Zu diesem Zweck werde ich die Ausführung

ALTER TABLE emails ADD PRIMARY KEY (ID) 

Aber diese Aktion resultierende in

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

Was könnte der Grund sein?

+0

Ist jede ID in Ihrer Tabelle eindeutig, oder könnten Dubletten vorhanden sein? –

+0

@TimBiegeleisen ja. Dafür gibt es eine Sequenz. – Ankur

+0

Verstehen Sie, dass der Versuch, eine nicht eindeutige Spalte zu einem Primärschlüssel zu machen, Probleme verursachen kann? –

Antwort

1

Der Grund dafür ist, dass in einigen Zeilen eine der VARCHAR-Spalten Daten enthält, die länger sind als die deklarierte Größe der Spalte.

Sie müssen eine SELECT verwenden, um die längsten Zeichenfolgen zu finden und die Tabellendefinition bei Bedarf mit längeren Spaltendefinitionen zu ändern. Zum Beispiel:

SELECT MAX (CHAR_LENGTH(status)) FROM emails 

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

Seltsames Verhalten. Warum können Daten eingefügt werden, die länger als die angegebene Größe sind? – Ankur

+0

Sie müssen die Version von HSQLDB und wie Sie die Daten einfügen. – fredt

Verwandte Themen