MySQL - Row size too large

geschrieben von datenbrei 
Willkommen! Anmelden Ein neues Profil erzeugen Suche
MySQL - Row size too large
14. Mai 2018 12:39
Hallo!

Ich habe versucht auf Ubuntu 18.04 mit MariaDB die Daten von Fakturama zu speichern. Ich bekomme dabei folgenden Fehler:

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
	at com.mysql.jdbc.Util.getInstance(Util.java:387)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:939)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3878)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3814)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2478)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2625)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2547)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2505)
	at com.mysql.jdbc.StatementImpl.executeInternal(StatementImpl.java:840)
	at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:740)
	at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:299)
	... 36 more

Meine Datenbank wurde mit dem Zeichensatz utf84mb angelegt, um vollständig UNICODE-fähig zu sein (Emoticons...)

Da ein Unicode-Zeichen im Zweifel die vierfache Länge eines normalen haben kann, benötigt die Datenbank ggf. auch das Vierfache an Speicher. Sie kann also nicht "ja" sagen beim Anlegen einer Tabelle, wenn die maximale Feldgröße in Bytes die maximal zulässige Länge in Bytes überschreiten würde.

Oder auf Deutsch: wenn die Speicherung sichergestellt sein soll, dann belegt evtl. jedes Zeichen vier Byte, die Länge eines Datenfeldes kann also nur ein Viertel so groß sein, wie die maximale Länge in Bytes.

Vielleicht helfen meine Gedanken?!? Vielleicht ist es auch was anderes? Ich benutze Version 2.0.1

Beste Grüße, Martin



1-mal bearbeitet. Zuletzt am 14.05.18 12:43.
Re: MySQL - Row size too large
14. Mai 2018 23:00
Hallo Martin,
den Fehler hatten wir hier auch schon mal. Das liegt daran, daß MariaDB (warum auch immer) eine andere Row-Size als MySQL hat (obwohl die ja eigentlich miteinander verwandt sein sollen). Man kann die Größe aber einstellen (über die my.ini, glaube ich). Ich muß mich nochmal belesen, wie wir das gelöst hatten.

Viele Grüße,
Ralf.
In diesem Forum dürfen leider nur registrierte Teilnehmer schreiben.

Klicke hier, um Dich einzuloggen