L2-scripts Форум

L2-scripts Форум (http://l2-scripts.ru/forum/index.php)
-   Archive High Five (http://l2-scripts.ru/forum/forumdisplay.php?f=104)
-   -   Почта не работает (http://l2-scripts.ru/forum/showthread.php?t=2750)

soar 09.03.2013 04:02

Почта не работает
 
Код:

[21:53:44] ERROR Error while saving mail!
java.sql.BatchUpdateException: Duplicate entry '269079060' for key 'item_id'
        at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:2024)
        at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1449)
        at org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
        at org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
        at l2s.gameserver.dao.MailDAO.save0(MailDAO.java:141)
        at l2s.gameserver.dao.MailDAO.save(MailDAO.java:463)
        at l2s.gameserver.model.mail.Mail.save(Mail.java:188)
        at l2s.gameserver.clientpackets.RequestExSendPost.runImpl(RequestExSendPost.java:307)
        at l2s.gameserver.clientpackets.L2GameClientPacket.run(L2GameClientPacket.java:50)
        at l2s.commons.net.nio.impl.MMOExecutableQueue.run(MMOExecutableQueue.java:38)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '269079060' for key 'item_id'
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
        at com.mysql.jdbc.Util.getInstance(Util.java:386)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1039)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3597)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3529)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1990)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2151)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2625)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2119)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2415)
        at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1976)
        ... 12 more

В последней апдейте проблема не решена, почта по-прежнему пропадает. Почему вы удалили предыдущую тему?

soar 09.03.2013 04:05

Код:

[05:25:57] ERROR Error while saving mail!
java.sql.BatchUpdateException: Duplicate entry '269246801' for key 'item_id'
        at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:2024)
        at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1449)
        at org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
        at org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
        at l2s.gameserver.dao.MailDAO.save0(MailDAO.java:141)
        at l2s.gameserver.dao.MailDAO.save(MailDAO.java:463)
        at l2s.gameserver.model.mail.Mail.save(Mail.java:188)
        at l2s.gameserver.clientpackets.RequestExSendPost.runImpl(RequestExSendPost.java:307)
        at l2s.gameserver.clientpackets.L2GameClientPacket.run(L2GameClientPacket.java:50)
        at l2s.commons.net.nio.impl.MMOExecutableQueue.run(MMOExecutableQueue.java:38)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '269246801' for key 'item_id'
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
        at com.mysql.jdbc.Util.getInstance(Util.java:386)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1039)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3597)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3529)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1990)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2151)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2625)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2119)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2415)
        at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1976)
        ... 12 more

[05:29:44] ERROR Error while saving mail!
java.sql.BatchUpdateException: Duplicate entry '269703561' for key 'item_id'
        at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:2024)
        at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1449)
        at org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
        at org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
        at l2s.gameserver.dao.MailDAO.save0(MailDAO.java:141)
        at l2s.gameserver.dao.MailDAO.save(MailDAO.java:463)
        at l2s.gameserver.model.mail.Mail.save(Mail.java:188)
        at l2s.gameserver.clientpackets.RequestExSendPost.runImpl(RequestExSendPost.java:307)
        at l2s.gameserver.clientpackets.L2GameClientPacket.run(L2GameClientPacket.java:50)
        at l2s.commons.net.nio.impl.MMOExecutableQueue.run(MMOExecutableQueue.java:38)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '269703561' for key 'item_id'
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
        at com.mysql.jdbc.Util.getInstance(Util.java:386)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1039)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3597)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3529)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1990)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2151)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2625)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2119)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2415)
        at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1976)
        ... 12 more


soar 09.03.2013 04:07

Сделайте что-нибудь, да хотя бы логирование запросов к MySQL, чтобы можно было выявить проблему.

soar 09.03.2013 15:41

После удаления из базы уникального ключа в таблице mail_attachments в БД стали попадать все письма, которые раньше пропадали. Это выглядит так:

Код:

message_id, item_id, message_id, sender_id, sender_name, receiver_id, receiver_name, expire_time, topic, body, price, type, unread
19133, 268484257, 19133, 269733723, SamaeL, 268573757, Mithos, 1364079963, впаывп, , 0, 0, 1
19146, 268484257, 19146, 269733723, SamaeL, 268573757, Mithos, 1364090804, ryeryt, , 0, 0, 1
19133, 268485238, 19133, 269733723, SamaeL, 268573757, Mithos, 1364079963, впаывп, , 0, 0, 1
19146, 268485238, 19146, 269733723, SamaeL, 268573757, Mithos, 1364090804, ryeryt, , 0, 0, 1
19133, 268968724, 19133, 269733723, SamaeL, 268573757, Mithos, 1364079963, впаывп, , 0, 0, 1
19146, 268968724, 19146, 269733723, SamaeL, 268573757, Mithos, 1364090804, ryeryt, , 0, 0, 1
19134, 269200284, 19134, 269733723, SamaeL, 268573757, Mithos, 1364081031, авпа, , 0, 0, 1
19146, 269200284, 19146, 269733723, SamaeL, 268573757, Mithos, 1364090804, ryeryt, , 0, 0, 1
19134, 269200285, 19134, 269733723, SamaeL, 268573757, Mithos, 1364081031, авпа, , 0, 0, 1
19146, 269200285, 19146, 269733723, SamaeL, 268573757, Mithos, 1364090804, ryeryt, , 0, 0, 1
19134, 269202507, 19134, 269733723, SamaeL, 268573757, Mithos, 1364081031, авпа, , 0, 0, 1
19146, 269202507, 19146, 269733723, SamaeL, 268573757, Mithos, 1364090804, ryeryt, , 0, 0, 1
19133, 269246809, 19133, 269733723, SamaeL, 268573757, Mithos, 1364079963, впаывп, , 0, 0, 1
19146, 269246809, 19146, 269733723, SamaeL, 268573757, Mithos, 1364090804, ryeryt, , 0, 0, 1

Я понимаю что так вы видимо решали дюп, связанный с почтой, но неужели вы думаете что такую проблему можно решить средствами БД? В базу НЕ ДОЛЖНЫ попадать дважды одни и те же вещи.

soar 09.03.2013 15:47

По тому, что я вижу на этом персонаже, баг выглядит так: допустим у персонажа А есть вещи а, b, c, которые он хочет переслать персонажу B. Он отправляет ему письмо с вещами a и b, письмо успешно сохраняется в базу, однако в результате какой-то ошибке в вашем коде он по-прежнему видит вещи a и b у себя в инвентаре. Он думает "Что за херня?" и снова отправляет персонажу B вещи a и b, добавляя к ним вещь c. На этот раз вещи пропадают в его инвентаре, однако в базу письмо не сохраняется, т.к. в базе уже есть письмо с вещами a и b, а индекс уникален. В результате персонаж B, зайдя в игру, видит первое письмо с вещами a и b, а вещь c навсегда пропала.

iqman 18.03.2013 17:47

То что вы решили ключ почты отключить что-бы не было ошибок на сервере, эт не вариант.
Сам себе дома наслал уже 15 раз айтемы туда и обратно и не один не застрял.

iqman 11.05.2013 22:14

Решено .


Часовой пояс GMT +4, время: 07:39.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot