forum.bitel.ru http://forum.bitel.ru/ |
|
Обнаружил ошибку с платежами http://forum.bitel.ru/viewtopic.php?f=22&t=12262 |
Страница 1 из 1 |
Автор: | Старик Крупский [ 17 фев 2017, 21:17 ] |
Заголовок сообщения: | Обнаружил ошибку с платежами |
Доброго времени суток. Внедряю биллинг, испытываю разные сценарии работы под свои нужды и наткнулся на такую особенность работы системы: 1. Делаю любой платеж для клиента. 2. Удаляю платеж. 3. Штатно перезагружаю сервер со всеми необходимыми server_stop.sh, service mysqld stop и тому подобное. 4. После запуска системы тому же клиенту делаю новый платеж. 5. Удаляю его и получаю ошибку "ru.bitel.bgbilling.common.BGException: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '4' for key 'PRIMARY'" Проверяю таблицы contract_payment & contract_payment_deleted. Вижу в contract_payment_deleted платеж, удаленный в пункте 2. У него ID=4 В contract_payment вижу платеж, созданный в пункте 4, у него тоже ID=4. Естественно - конфликт при удалении. Очищаю contract_payment_deleted. Убираю последний платеж из contract_payment. Повторяю сценарий - аналогичная картина. Снова очистка. Пробую сценатрий не с 1 платежем, а с несколькими. Несколько завел, потом все удалил. Та же катрина - конфликт. Снова очистка. Повторяю без перезагрузки сервера - все работает как нужно. Поскольку поле ID автоинкрементное, то виноват скорее всего mysql, который забывает в момент перезагрузки что там были записи с большим ID. Но может ID платежа в contract_payment нужно дополнительно контролировать? Возможно возникновение подобных ошибок и в других подсистемах при похожем сценарии. Да, забыл совсем. Клиент: вер. 7.0.867 / 23.01.2017 13:35:02 os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_112 Сервер: вер. 7.0.1182 / 27.01.2017 17:01:29 os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_40 bill: вер. 7.0.111 / 09.12.2016 13:27:55 mariadb-server-5.5.47-1.el7_2.x86_64 |
Автор: | dimOn [ 18 фев 2017, 20:21 ] |
Заголовок сообщения: | Re: Обнаружил ошибку с платежами |
это известная и документированная фича мускуля и иннодб - при старте он пересчитывает значение текущего автоинкремента |
Автор: | skn [ 19 фев 2017, 22:41 ] |
Заголовок сообщения: | Re: Обнаружил ошибку с платежами |
Надо поменять тип индекса у таблицы contract_payment_deleted. Исправим... |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |