milosvamp Posted December 21, 2017 Posted December 21, 2017 (edited) new problem :D take a look why is that happening ? com.l2jserver.gameserver.dao.impl.mysql.HennaDAOMySQLImpl insert SEVERE: Failed saving character henna. {} java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '268591989-1-0' for key 'PRIMARY' at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:533) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:513) at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:115) at com.mysql.cj.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:1983) at com.mysql.cj.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1826) at com.mysql.cj.jdbc.PreparedStatement.execute(PreparedStatement.java:1153) at com.zaxxer.hikari.pool.ProxyPreparedStatement.execute(ProxyPreparedStatement.java:44) at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.execute(HikariProxyPreparedStatement.java) at com.l2jserver.gameserver.dao.impl.mysql.HennaDAOMySQLImpl.insert(HennaDAOMySQLImpl.java:92) at com.l2jserver.gameserver.model.actor.instance.L2PcInstance.addHenna(L2PcInstance.java:6929) at com.l2jserver.gameserver.network.clientpackets.RequestHennaEquip.runImpl(RequestHennaEquip.java:74) at com.l2jserver.gameserver.network.clientpackets.L2GameClientPacket.run(L2GameClientPacket.java:69) at com.l2jserver.gameserver.network.L2GameClient.run(L2GameClient.java:1135) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Edited December 21, 2017 by milosvamp Quote
0 melron Posted December 21, 2017 Posted December 21, 2017 post your addHenna method (L2PcInstance file) Quote
0 Tryskell Posted December 21, 2017 Posted December 21, 2017 Wait for L2j to fix the problem. Looks like the dude who rework things don't even test them. Quote
0 milosvamp Posted December 21, 2017 Author Posted December 21, 2017 2 hours ago, melron said: post your addHenna method (L2PcInstance file) here: public boolean addHenna(L2Henna henna) { for (int i = 0; i < 3; i++) { if (_henna[i] == null) { _henna[i] = henna; // Calculate Henna modifiers of this L2PcInstance recalcHennaStats(); DAOFactory.getInstance().getHennaDAO().insert(this, henna, i + 1); // Send Server->Client HennaInfo packet to this L2PcInstance sendPacket(new HennaInfo(this)); // Send Server->Client UserInfo packet to this L2PcInstance sendPacket(new UserInfo(this)); sendPacket(new ExBrExtraUserInfo(this)); // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); return true; } } return false; } /** * Calculate Henna modifiers of this L2PcInstance. */ and by the way, even when I manage to save the henna SOMEHOW idk how but sometimes it gets saved. AFTER RELOG IT DOESNT ACTIVATE IT, the dyes are ON THE CHAR but INACTIVE......pffff Quote
0 melron Posted December 21, 2017 Posted December 21, 2017 The error appears when you trying to login whith saved henna? Quote
0 milosvamp Posted December 21, 2017 Author Posted December 21, 2017 Just now, melron said: The error appears when you trying to login whith saved henna? No, the problem shows up when i try to change dyes ( to remove the dyes and put the same dye again ) or to put another dye instead.... then the error shows up... Otherwise it saves normally but when i do a relog the dyes are INACTIVE they are not increasing the statuses.... but this thing doesn't show any error....so my dyes are basically fucked.. Quote
0 melron Posted December 21, 2017 Posted December 21, 2017 (edited) Then the whole henna code is wrong. check the remove thing first. Delete action seems like doesnt even exetute the db part and as the error appear Duplicate entry '268591989-1-0' for key 'PRIMARY' it is because even if you can see the spot as empty it isnt. when you add a different henna , the server will try to save it in the db and the duplicate error will appear. Edited December 21, 2017 by melron Quote
0 milosvamp Posted December 21, 2017 Author Posted December 21, 2017 1 minute ago, melron said: Then the whole henna code is wrong. check the remove thing first. Delete action seems like doesnt even exetute the db part and as the error appear Duplicate entry '268591989-1-0' for key 'PRIMARY' it is because even if you can see the spot as empty it isnt. when you add a different henna , the server will try to save it in the db and the dublicate error will appear. So what to do :D Quote
0 melron Posted December 21, 2017 Posted December 21, 2017 I told you. check the remove henna to see whats going on .. put debugs too to catch the bug Quote
0 milosvamp Posted December 21, 2017 Author Posted December 21, 2017 1 minute ago, melron said: I told you. check the remove henna to see whats going on .. put debugs too to catch the bug public boolean removeHenna(int slot) { if ((slot < 1) || (slot > 3)) { return false; } slot--; L2Henna henna = _henna[slot]; if (henna == null) { return false; } _henna[slot] = null; DAOFactory.getInstance().getHennaDAO().delete(this, slot + 1); // Calculate Henna modifiers of this L2PcInstance recalcHennaStats(); // Send Server->Client HennaInfo packet to this L2PcInstance sendPacket(new HennaInfo(this)); // Send Server->Client UserInfo packet to this L2PcInstance sendPacket(new UserInfo(this)); sendPacket(new ExBrExtraUserInfo(this)); // Add the recovered dyes to the player's inventory and notify them. getInventory().addItem("Henna", henna.getDyeItemId(), henna.getCancelCount(), this, null); reduceAdena("Henna", henna.getCancelFee(), this, false); final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.EARNED_S2_S1_S); sm.addItemName(henna.getDyeItemId()); sm.addLong(henna.getCancelCount()); sendPacket(sm); sendPacket(SystemMessageId.SYMBOL_DELETED); // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); return true; } /** * Adds a henna to the player and stores it into the database. * @param henna the henna to add to the player * @return {@code true} if the henna is added to the player, {@code false} otherwise */ ..................... Quote
0 melron Posted December 21, 2017 Posted December 21, 2017 bro try to do something lol .... 1) add debugs in your both codes 2) clear the data about hennas from your char (db part) then login with your char (should be with empty hennas) try to add one, check the database is it saved? if yes try to remove it. check the db is it removed? ... Quote
0 milosvamp Posted December 21, 2017 Author Posted December 21, 2017 1 minute ago, melron said: bro try to do something lol .... 1) add debugs in your both codes 2) clear the data about hennas from your char (db part) then login with your char (should be with empty hennas) try to add one, check the database is it saved? if yes try to remove it. check the db is it removed? ... idk how to add debug codes...."bro" .... :D :/ Quote
0 melron Posted December 21, 2017 Posted December 21, 2017 then choose the 2nd option. You can just use println option and increasing the number to see where it stops 1 Quote
0 milosvamp Posted December 21, 2017 Author Posted December 21, 2017 11 minutes ago, melron said: then choose the 2nd option. You can just use println option and increasing the number to see where it stops I did the method 2 and it works.... But I can't do it all the time with all chars...damn.... and also THE DYES ARE INCATIVE within relogging the char, I put the dye, everything works. Relog. Dye status disappeared eventho it's on my char.... Quote
0 melron Posted December 21, 2017 Posted December 21, 2017 the 'method' 2 was for test purpose and not for fix your problem. i dont have your sources to check whats going on dude.... So even restoreHenna is wrong... Quote
Question
milosvamp
new problem :D take a look
why is that happening ?
14 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.