在用CoreProtect插件的时候,总会有一些报错弹出来,问了一些人,叫我8要使用MySQL了,不过我还是找到了方案,先感谢一下MCBBS回答贴的支持
运行环境
服务器版本:1.12.2
CoreProtect版本:2.14.2(MCBBS内找的汉化版)
服务端:CatServer-08cb86c-async
MySQL版本:5.7.26
情况复现
用CoreProtect,开启MySQL,填写好必填项目后,启动后会时不时弹出如下错误
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'user' at row 1
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3971)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2527)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2680)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2484)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1858)
at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2079)
at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2013)
at com.mysql.jdbc.PreparedStatement.executeLargeUpdate(PreparedStatement.java:5104)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1998)
at net.coreprotect.database.Database.insertUser(Database.java:354)
at net.coreprotect.database.Database.loadUserID(Database.java:403)
at net.coreprotect.consumer.Process.processConsumer(Process.java:45)
at net.coreprotect.consumer.Consumer.run(Consumer.java:105)
at java.lang.Thread.run(Unknown Source)
稍作分析
从上面的说明可以看出如下结论
Data too long for column 'user' at row 1
第1行的“user”列的数据太长
也就是说,user数据太长了,MySQL可能是不能支持的,因此我们应加大user的数据长度
解决方法
使用一些数据库工具,更改"co_user"表里的字段"user"类型,从varchar改为char,并且长度调到128,简单粗暴
这样操作好后,重新加载CoreProtect即可解决报错问题
关于问题的一些话
后来我搜索了一下,有三个人在插件贴下反馈了这个问题,且服务器版本均为1.12.2,这可能是这个版本下CoreProtect的问题,后来作者回复说在2.15.0版本后解决,但我查看了下,2.15.0版本已经是1.13的CoreProtect了,我尝试装在我的服务端上会提示版本不对,无法加载,于是才有的这篇文章
参考地址:
CoreProtect-1.12.2使用MySQL报错问题
https://www.mcbbs.net/thread-991797-1-1.html
Comments | NOTHING