LuckPerms

LuckPerms

41.4k Downloads

Print message to chat when data exceeds max column length instead of throwing error

Phoenix616 opened this issue ยท 2 comments

commented

This error occurs when using MySQL (and probably with other databases with column widths too) due to the worlds (and server) column only being 36 chars long in the permission tables when trying to use a longer (world1|world2) shorthand like described here:

[20:46:37] [Server thread/INFO]: Phoenix616 issued server command: /lp group spieler permission set simplegamemodes.gamemode.spectator creative (creative_flat|creative_hammerfall|creative_liberty|creative_riegel7|creative_snow_mountain|creative_stammi|creative_tropic_island|creative_tropic_island_1)
[20:46:37] [pool-6-thread-1/INFO]: [LP] LOG > (Phoenix616) [G] (spieler) --> permission set simplegamemodes.gamemode.spectator true creative (creative_flat|creative_hammerfall|creative_liberty|creative_riegel7|creative_snow_mountain|creative_stammi|creative_tropic_island|creative_tropic_island_1)
[20:46:37] [Craft Scheduler Thread - 849/WARN]: java.sql.BatchUpdateException: Data truncation: Data too long for column 'world' at row 1
[20:46:37] [Craft Scheduler Thread - 849/WARN]:         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[20:46:37] [Craft Scheduler Thread - 849/WARN]:         at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
[20:46:37] [Craft Scheduler Thread - 849/WARN]:         at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
[20:46:37] [Craft Scheduler Thread - 849/WARN]:         at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
[20:46:37] [Craft Scheduler Thread - 849/WARN]:         at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
[20:46:37] [Craft Scheduler Thread - 849/WARN]:         at com.mysql.jdbc.Util.getInstance(Util.java:408)
[20:46:37] [Craft Scheduler Thread - 849/WARN]:         at com.mysql.jdbc.SQLError.createBatchUpdateException(SQLError.java:1162)
[20:46:37] [Craft Scheduler Thread - 849/WARN]:         at com.mysql.jdbc.ServerPreparedStatement.executeBatchSerially(ServerPreparedStatement.java:757)
[20:46:37] [Craft Scheduler Thread - 849/WARN]:         at com.mysql.jdbc.PreparedStatement.executeBatchInternal(PreparedStatement.java:1257)
[20:46:37] [Craft Scheduler Thread - 849/WARN]:         at com.mysql.jdbc.StatementImpl.executeBatch(StatementImpl.java:958)
[20:46:37] [Craft Scheduler Thread - 849/WARN]:         at com.zaxxer.hikari.pool.ProxyStatement.executeBatch(ProxyStatement.java:125)
[20:46:37] [Craft Scheduler Thread - 849/WARN]:         at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeBatch(HikariProxyPreparedStatement.java)
[20:46:37] [Craft Scheduler Thread - 849/WARN]:         at me.lucko.luckperms.common.storage.backing.SQLBacking.saveGroup(SQLBacking.java:750)
[20:46:37] [Craft Scheduler Thread - 849/WARN]:         at me.lucko.luckperms.common.storage.AbstractStorage.lambda$saveGroup$8(AbstractStorage.java:169)
[20:46:37] [Craft Scheduler Thread - 849/WARN]:         at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1590)
[20:46:37] [Craft Scheduler Thread - 849/WARN]:         at org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftTask.run(CraftTask.java:58)
[20:46:37] [Craft Scheduler Thread - 849/WARN]:         at org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:52)
[20:46:37] [Craft Scheduler Thread - 849/WARN]:         at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22)
[20:46:37] [Craft Scheduler Thread - 849/WARN]:         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[20:46:37] [Craft Scheduler Thread - 849/WARN]:         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[20:46:37] [Craft Scheduler Thread - 849/WARN]:         at java.lang.Thread.run(Thread.java:745)
[20:46:37] [Craft Scheduler Thread - 849/WARN]: Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'world' at row 1
[20:46:37] [Craft Scheduler Thread - 849/WARN]:         at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3968)
[20:46:37] [Craft Scheduler Thread - 849/WARN]:         at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3906)
[20:46:37] [Craft Scheduler Thread - 849/WARN]:         at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2524)
[20:46:37] [Craft Scheduler Thread - 849/WARN]:         at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1281)
[20:46:37] [Craft Scheduler Thread - 849/WARN]:         at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:782)
[20:46:37] [Craft Scheduler Thread - 849/WARN]:         at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2073)
[20:46:37] [Craft Scheduler Thread - 849/WARN]:         at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2009)
[20:46:37] [Craft Scheduler Thread - 849/WARN]:         at com.mysql.jdbc.ServerPreparedStatement.executeBatchSerially(ServerPreparedStatement.java:724)
[20:46:37] [Craft Scheduler Thread - 849/WARN]:         ... 13 more
commented

See my reply to #255, this isn't supported anymore. I'll fix the documentation.

commented

The input length should be validated and a pretty message printed to the user 'though.