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.
InformationsquelleAutor sonoerin | 2014-06-13
Schreibe einen Kommentar