Название: mysql8 vs tmppays Отправлено: Warlock от 28 Июня 2022, 15:05:03 приветствую всех. есть такая проблема.
в kerner/tmppays.cfg есть значение balance_finishes_service => 1. с mysql 5.5 все отлично работает, но вот с 8-ой версией не хочет. Вот что пишет: Код: The target table v_services of the UPDATE is not updatable Название: Re: mysql8 vs tmppays Отправлено: Efendy от 02 Июля 2022, 07:37:46 Попробуй пересоздать вьюху с алгоритмом UNDEFINED
Код: DROP VIEW IF EXISTS v_services; Название: Re: mysql8 vs tmppays Отправлено: Warlock от 02 Июля 2022, 20:19:51 Спасибо, попробую. А это можно делать на рабочей системе, или лучше тормознуть ядро и запущенные модули?
Название: Re: mysql8 vs tmppays Отправлено: Cell от 03 Июля 2022, 08:29:58 делай на рабочей, потом все ребутнешь и все
Название: Re: mysql8 vs tmppays Отправлено: Warlock от 04 Июля 2022, 22:13:04 Попробуй пересоздать вьюху с алгоритмом UNDEFINED Не помогло, такая же ошибка.Код: DROP VIEW IF EXISTS v_services; Название: Re: mysql8 vs tmppays Отправлено: Warlock от 06 Июля 2022, 10:29:38 Может возможно каким-то образом апдейтить сразу users_services чтоб модуль работал корректно? А то вроде только избавился от дедлоков, вообще не очень хочется откатывать версию mysql.
Название: Re: mysql8 vs tmppays Отправлено: Redmen от 06 Июля 2022, 12:37:34 https://dev.mysql.com/doc/refman/8.0/en/view-updatability.html (https://dev.mysql.com/doc/refman/8.0/en/view-updatability.html)
Цитировать Іноді багатотабличне подання може бути оновлюваним, якщо припустити, що його можна обробити за допомогою MERGE алгоритму. Щоб це працювало, представлення має використовувати внутрішнє об’єднання (а не зовнішнє об’єднання чи UNION). ... Перегляди, які використовують UNION ALL, заборонені, навіть якщо вони теоретично можуть бути оновлені. для перевірки є запит: Код: SELECT `TABLE_SCHEMA`, `TABLE_NAME`, `IS_UPDATABLE` FROM `views` WHERE `TABLE_NAME` LIKE 'v_services'; LEFT JOIN => INNER JOIN перевірив себе на тестовому - працює, але кількість виведених рядків не одинакова, тому треба більш детально досліджувати це питання на прод не рекомендую) Название: Re: mysql8 vs tmppays Отправлено: Redmen от 06 Июля 2022, 13:29:15 Может возможно каким-то образом апдейтить сразу users_services чтоб модуль работал корректно? А то вроде только избавился от дедлоков, вообще не очень хочется откатывать версию mysql. для tmppays.pm Код: UPDATE users_services u INNER JOIN services s ON (u.service_id = s.service_id) SET u.tags=CONCAT(u.tags,',end_now,') WHERE s.price>0 AND u.uid = ? для balances.pm Код: UPDATE users_services u INNER JOIN services s ON (u.service_id = s.service_id) SET u.tags=CONCAT(u.tags,',end_now,'), u.next_service_id=0 WHERE s.price>0 AND u.uid = ? але це не точно!) ще є схоже в services/action.pm Название: Re: mysql8 vs tmppays Отправлено: Warlock от 07 Июля 2022, 08:12:34 а где-то ядром или какими-то модулями вьювы апдейтатся? а то вдруг там тоже ошибки, но я пока этого не заметил? просто может быть тогда в доке вместо рекомендаций установить mysql8 сделать предупреждение, что его не надо ставить? )
Название: Re: mysql8 vs tmppays Отправлено: Warlock от 13 Июля 2022, 15:37:22 для tmppays.pm Спасибо большое! так работает.Код: UPDATE users_services u INNER JOIN services s ON (u.service_id = s.service_id) SET u.tags=CONCAT(u.tags,',end_now,') WHERE s.price>0 AND u.uid = ? для balances.pm Код: UPDATE users_services u INNER JOIN services s ON (u.service_id = s.service_id) SET u.tags=CONCAT(u.tags,',end_now,'), u.next_service_id=0 WHERE s.price>0 AND u.uid = ? але це не точно!) ще є схоже в services/action.pm Ну а доку все-таки разработчику предлагаю подправить. Название: Re: mysql8 vs tmppays Отправлено: Efendy от 14 Августа 2022, 22:19:39 Запушил в next.
|