Servoy 2019.6 rc Could not upgrade repository

After a crash I had to reinstall Servoy developer and server on Mac OSX 10.14.5 using the latest rc Servoy 2019.6. All previous installations had to be erased so I started from scratch but I encountered problems with the stand alone application server (not the one in developer). This is what I did:
a) started the MySQL 8.0.16 server;
a) created an empty db on MySQL 8.0.16 called repository_server;
b) installed the Application Server from Servoy installer;
c) copied mysql-connector-java-8.0.16.jar in the drivers folder;
d) copied the servoy.properties file from the Developer server installation and replaced the one created by the installer in the Application server folder so to have a named connection to Servoy repository;
This is the content of servoy.properties file

#servoy
#Thu Jun 20 15:07:36 CEST 2019
server.0.maxPreparedStatementsIdle=100
ServerManager.numberOfServers=1
server.0.enabled=true
server.0.userName=root
server.0.prefixTables=false
servoy.objectPoolSize=50000
server.0.queryProcedures=false
server.0.connectionValidationType=0
ApplicationServer.pingDelay=300
server.0.driver=com.mysql.cj.jdbc.Driver
server.0.maxConnectionsIdle=10
server.0.maxConnectionsActive=30
server.0.password=encrypted\:##########################
SocketFactory.useTwoWaySocket=true
server.0.schema=<none>
server.0.skipSysTables=false
java.rmi.server.hostname=127.0.0.1
pdf_forms_plugin_servername=pdf_forms
servoy.FileServerService.defaultFolder=/Users/#########/.servoy/uploads/7782d384-2757-43e9-ae62-c0b22633f066
server.0.catalog=<none>
server.0.URL=jdbc\:mysql\://localhost/repository_server?useTimezone\=true&serverTimezone\=Europe/Rome
server.0.serverName=repository_server
SocketFactory.useSSL=true

e) I then executed```
./servoy_server.sh -upgradeRepository

However the repository_server was not upgraded and the log reported these errors

Creating repository.
Error creating repository: com.servoy.j2db.persistence.RepositoryException: com.servoy.j2db.persistence.RepositoryException: java.sql.SQLSyntaxErrorException: 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
com.servoy.j2db.persistence.RepositoryException: Error creating repository
at com.servoy.j2db.server.main.ApplicationServer.Zb(ApplicationServer.java:43)
at com.servoy.j2db.server.main.Zap.Za(Zap.java:34)
at com.servoy.j2db.server.main.Zap.start(Zap.java:31)
at com.servoy.j2db.server.main.ApplicationServer.main(ApplicationServer.java:502)
Caused by: com.servoy.j2db.persistence.RepositoryException: com.servoy.j2db.persistence.RepositoryException: java.sql.SQLSyntaxErrorException: 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 com.servoy.j2db.server.Za.Zn.createRepositoryTables(Zn.java:672)
at com.servoy.j2db.server.Za.Zo.Zc(Zo.java:385)
at com.servoy.j2db.server.Za.Zo.Zb(Zo.java:1683)
at com.servoy.j2db.server.main.ApplicationServer.Zb(ApplicationServer.java:82)
… 3 more
Caused by: com.servoy.j2db.persistence.RepositoryException: java.sql.SQLSyntaxErrorException: 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 com.servoy.j2db.server.Za.Zo.Za(Zo.java:730)
at com.servoy.j2db.server.Za.Zn.recreateServoyColumnInfo(Zn.java:464)
at com.servoy.j2db.server.Za.Zn.createRepositoryTables(Zn.java:459)
… 6 more
Caused by: java.sql.SQLSyntaxErrorException: 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 com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
at com.mysql.cj.jdbc.StatementImpl.executeInternal(StatementImpl.java:782)
at com.mysql.cj.jdbc.StatementImpl.execute(StatementImpl.java:666)
at org.apache.commons.dbcp2.DelegatingStatement.execute(DelegatingStatement.java:175)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at com.servoy.j2db.datasource.Zf.invoke(Zf.java:11)
at com.sun.proxy.$Proxy19.execute(Unknown Source)
at org.apache.commons.dbcp2.DelegatingStatement.execute(DelegatingStatement.java:175)
at org.apache.commons.dbcp2.DelegatingStatement.execute(DelegatingStatement.java:175)
at org.apache.commons.dbcp2.DelegatingStatement.execute(DelegatingStatement.java:175)
at org.apache.commons.dbcp2.DelegatingStatement.execute(DelegatingStatement.java:175)
at com.servoy.j2db.server.Za.Zo.Za(Zo.java:1480)
… 8 more


Any help greatly appreciated

Hi,

While creating tables, Servoy hits the limits of your mySQL database.
https://dev.mysql.com/doc/refman/8.0/en … ize-limits

Best would be to open an issue on this so Servoy can investigate what has changed compared to previous versions.
They might have added a new column to some table resulting in this row-size issue.

Thanks for reporting this.

We will fix this for next 2019.06 build, see https://support.servoy.com/browse/SVY-13869

Rob

Thanks to both. I have done some testing by downgrading MySQL server and jdbc driver from 8 to 5.7 and the problem persisted. So the culprit is undoubtedly Servoy 2019.

The problem is that mysql default charset is changed some time ago from utf8 which uses 3 bytes per character to utf8mb4 which uses 4 bytes per character.
One of the repository tables went over the limit with that.

This has been fixed for release 2019.06.

Rob

Thank you very much, now everything is ok