Warum ist dieser Wert zu lang für meinen H2 Tabelle
Ich habe eine spring-data-jpa-app, mit H2 für die Lagerung. Wenn ich versuche, und parse gewisse Daten in die Tabelle ein, erhalte ich eine Fehlermeldung:
o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 22001, SQLState: 22001
2014-06-13 15:42:07.062 ERROR 66742 --- [nio-9001-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : Value too long for column "REMARKS VARCHAR(255)": "'""DOB 31 Jan 1939; Cedula No. 6068015 (Colombia); alt. Cedula No. 6067015 (Colombia); Passport T321642 (Colombia); alt. Passport... (259)"; SQL statement:
insert into sdn (call_sign, grt, program, remarks, sdn_num, sdn_type, title, tonnage, vess_flag, vess_owner, vess_type, ent_num) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [22001-172]
Ich habe eine Tabelle wie folgt definiert:
CREATE TABLE IF NOT EXISTS Sdn (
entNum BIGINT (11) NOT NULL,
sdnName VARCHAR(700) NULL,
sdnType VARCHAR(24) NULL,
program VARCHAR(100) NULL,
title VARCHAR(4000) NULL,
callSign VARCHAR(20) NULL,
vessType VARCHAR(50) NULL,
tonnage VARCHAR(30) NULL,
grt VARCHAR(20) NULL,
vessFlag VARCHAR(80) NULL,
vessOwner VARCHAR(300) NULL,
remarks CLOB NULL,
UNIQUE KEY entityNum(entNum)
);
Und meine @Entity-Klasse als:
@Entity
public class Sdn {
@Id
private long entNum;
private String sdnName;
private String sdnType;
private String program;
private String title;
private String callSign;
private String vessType;
private String tonnage;
private String grt;
private String vessFlag;
private String vessOwner;
private String remarks;
Hier ist der betreffende Datensatz, die eindeutig ist klein genug, um in die Spalte passen:
"DOB 31 Jan 1939; Cedula No. 9876543 (cccccccc); alt. Cedula No. 6067015 (cccccccc); Passport T123456 (cccccccc); alt. Passport 1234567 (Comoros); alt. Passport 12345 (Argentina); alt. Passport 87654321 (ppppppppp); a.k.a. 'THE TTTT PLAYER'; a.k.a. 'NAME1'."
Alles was ich denken kann ist, dass die semicolins oder andere ungültige Zeichen wirft diese exception.
Kann jeder sehen das problem hier, und eine alternative vorschlagen zu umgehen?
- strlen() der Zeichenfolge (einschließlich der
"
am Beginn/Ende) zeigt, dass es 258 Zeichen lang sein. Also ja, die DB ist richtig und du bist schob Sie einen Elefanten in ein Mauseloch.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre angegebenen Tabelle definition:
nicht einverstanden mit der Fehlermeldung, die sagt, dass die Bemerkungen-Spalte ist
VARCHAR(255)
eher alsCLOB
.Und Ihr Wert übersteigt, wird die Begrenzung auf 255 Zeichen.
Müssen Sie möglicherweise ändern, um die Tabelle zu entsprechen, was Sie dachten, es war.
Ihre Person scheint keine JPA oder Hibernate annotations definieren die Typen der Spalten. Möglicherweise müssen Sie auch fügen Sie eine Anmerkung auf die
remarks
Feld bezeichnete es alsCLOB
.