powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / MariaDB, проблемы с Alter ignore table.
8 сообщений из 8, страница 1 из 1
MariaDB, проблемы с Alter ignore table.
    #39501917
Grega123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,

Использую MariaDB версии 10.0.27 с InnoDB таблицами.

Столкнулся с проблемой с Alter Table процедурой (добавление/удаление индекса или колонки, проходит в онлайне без локов на таблице) Если во время альтера попытаться записать в таблицу дублирующую по Unique индексу запись, то получаем Dublicate Key update ошибку как на Insert операцию, так и на Alter операцию. Причём Alter сваливается с ошибкой не моментально, а только под конец своей работы. (через час-полтора после запуска).

Предположив, что альтер склонировав таблицу пытается накатить все накопившееся изменения (почему то даже неуспешные), попробовал пускать его через ALTER IGNORE TABLE. Документация говорит, что в таком случае альтер должен игнорировать Dublicate Key Update ошибки. Но он всё равно крашиться.

Собственно нужна помощь. Как заставить Alter игнорировать Dublicate Key Update ошибки. Архитектурно от таких ошибок не избавится. Downtime не выбить, всё должно происходить без остановки работы бд.
...
Рейтинг: 0 / 0
MariaDB, проблемы с Alter ignore table.
    #39501921
Grega123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поправляюсь, ошибка - Dublicate entry "123" dor key "UNIQUE INDEX NAME"
...
Рейтинг: 0 / 0
MariaDB, проблемы с Alter ignore table.
    #39501984
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы хотите сказать, что при выполнении ALTER TABLE таблица не блокируется, и Вы можете в неё добавлять данные???
...
Рейтинг: 0 / 0
MariaDB, проблемы с Alter ignore table.
    #39502527
Grega123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, InnoDB умеет делать неблокирующие таблицу альтеры.

https://dev.mysql.com/doc/refman/5.6/en/innodb-online-ddl.html
...
Рейтинг: 0 / 0
MariaDB, проблемы с Alter ignore table.
    #39502552
Grega123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я так понимаю проблема в этом. Но есть ли возможность её избежать средствами бд?

When running an online DDL operation, the thread that runs the ALTER TABLE statement applies an “online log” of DML operations that were run concurrently on the same table from other connection threads. When the DML operations are applied, it is possible to encounter a duplicate key entry error (ERROR 1062 (23000): Duplicate entry), even if the duplicate entry is only temporary and would be reverted by a later entry in the “online log”. This is similar to the idea of a foreign key constraint check in InnoDB in which constraints must hold during a transaction.
...
Рейтинг: 0 / 0
MariaDB, проблемы с Alter ignore table.
    #39502573
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Grega123 , это был вопрос типа "Вы сознательно решили устроить себе этот геморрой?"... ну да ладно.

На момент выполнения запроса INSERT/UPDATE в структуре таблицы УЖЕ имеется ограничение на уникальность поля (именно CONSTRAINT, а не UNIQUE INDEX!!! - индекса ещё нет, он только строится). Поэтому запрос сразу получает отлуп.

А ALTER TABLE отваливается по завершении, вероятно, потому, что построение нового, уникального, индекса, является закрытым суб-процессом, в то время как сведения о проблеме находятся в основном процессе изменения структуры таблицы и ждут окончания очередного этапа изменения, и приводят к ошибке по завершении суб-процесса. Ну или что-то типа того.
...
Рейтинг: 0 / 0
MariaDB, проблемы с Alter ignore table.
    #39502575
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О! собсно, приведённая цитата приблизительно об этом и говорит.
...
Рейтинг: 0 / 0
MariaDB, проблемы с Alter ignore table.
    #39503158
Grega123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема то ясна. Интересно, можно ли её как нибудь избежать средствами mysql.
В голову ничего не приходит. Разве что попробовать через триггер проверять уникальность и вручную крашить транзакцию с другим эксепшеном. Но, даже если поулчится, это попахивает костылями :))
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / MariaDB, проблемы с Alter ignore table.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]