Видалення дублікатів перекладів

Помилка дублуювання перекладів такого вигляду

DETAIL:  Key (type, lang, md5(src))=(code, ru_RU, 25e8f2fd2871c8423bbe4e254066cd98) is duplicated.

може виникати при апгрейді odoo зі старших версій або при використані не зовсім якісних модулів.

Причиною є додавання індексу ir_translation_code_unique який виглядає

self._cr.execute("CREATE UNIQUE INDEX ir_translation_code_unique ON ir_translation (type, lang, md5(src)) WHERE type = 'code'")


Якщо не має можливості або потреби розбиратись, що є причиною дюблювання перекладів, можна просто видалити дублі з бази, залишивши лише один варіант перекладу


DELETE 
FROM ir_translation 
WHERE CONCAT("type", lang, md5(src)) IN (
    SELECT CONCAT("type", lang, md5_src) AS md5_src 
    FROM (
        SELECT "type", lang, md5_src, count(id) AS count_id
        FROM (
            SELECT id, "type", lang, md5(src) AS md5_src 
            FROM ir_translation
        ) AS it1
    GROUP BY "type", lang, md5_src
    ) AS it2
    WHERE count_id > 1 
AND id not in (
    SELECT min(id) AS count_id
    FROM (
        SELECT id, "type", lang, md5(src) AS md5_src 
        FROM ir_translation
    ) AS it1
    GROUP BY "type", lang, md5_src
)


Видалення дублікатів перекладів
Володимир Карабанов 4 жовтня, 2022
Поділитися цією публікацією
Теги
Архів
Openrouteservice сервер без Docker