Сообщения

Сообщения за сентябрь, 2020

Битрикс: архитектурная ошибка SQL

Изображение
В схеме базы данных битрикса есть неочевидный баг. На первый взгляд, всё выглядит нормально, а по факту - не работает. Дело вот в чём. Есть таблица пользователей - b_user . Вполне логично ожидать от такой таблицы, что поле логина будет уникальным. Чтобы база данных не давала физически сохранить две учётные записи с одинаковым логином. Но в битриксе это не так! Уникальный составной ключ Яркий пример проблемы, которую привносит разработчик, выполняя работу архитектора баз данных. SQL-запросом SHOW CREATE TABLE b_user; Можно просмотреть схему таблицы, где видно, что есть некий уникальный составной ключ ix_login . На этот ключ возлагались напрасные надежды следить за уникальностью логинов. Вот как выглядит схема этой таблицы (из вывода запроса убрал ненужные в данном обзоре столбцы): CREATE TABLE `b_user` ( `ID` int(18) NOT NULL AUTO_INCREMENT, `TIMESTAMP_X` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `LOGIN` varchar(50) COLLATE utf8_unicode_ci NOT NULL, `PAS