Задать вопрос
@sevnet
Системный аналитик, бизнес-консультант

Как исправить ошибку индекса PRIMARY базы данных mysql bitrix24?

Я перенёс портал из облака в коробку, в базе данных возникла ошибка индекса PRIMARY:
В таблице b_timeman_monitor_user_log отсутствует индекс PRIMARY (date_log,user_id,code)

1. Захожу через phpMyAdmin, нахожу таблицу b_timeman_monitor_user_log, в ней индекс PRIMARY - есть, однако у него всего один столбец ID: cf791-clip-273kb.png?nocache=1
2. Жму изменить - e1ed7-clip-176kb.png?nocache=1
3. Первый столбец изменяю на date_log, второй на user_id, третий на code, жму вперёд и получаю ошибку: 2603c-clip-145kb.png?nocache=1
4. Пробовал сделать иначе, не трогать поле ID, а просто добавить недостающие: f5462-clip-49kb.png?nocache=1 всё сохраняется успешно: a1ae5-clip-45kb.png?nocache=1 Однако ошибка (цитата выше) при проверке БД - не пропадает.

Вопрос к знатокам mysql как мне исправить это ошибку?

У меня есть вариант такой:
1. Выгрузить это таблицу в файл.
2. Создать заново с нужной структурой.
3. Залить из файла данные.

Но тут есть сомнения, т.к. я в структуру в индекс вношу изменения накатится ли новая таблица из выгруженного файла?
  • Вопрос задан
  • 3738 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@Akina
Сетевой и системный админ, SQL-программист.
Факт 1

Сообщение об ошибке явно сгенерировано приложением, которое отлично знает, какой должна быть структура первичного индекса данной таблицы.

Факт 2

Я перенёс портал из облака в коробку


Итого

Факты свидетельствуют о том, что перенос был выполнен некорректно. Для исправления - удалите поле id, а затем создайте первичный индекс с указанными тремя полями.

Для проверки - предварительно подключитесь к старой версии таблицы и проверьте, действительно ли в ней отсутствует автоинкрементное поле по фамилии id. А в качестве совсем бреда - сравните, какая СУБД (включая точную версию) на старом и на новом месте.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@aaalllsss
CREATE INDEX idx ON b_timeman_monitor_user_log (date_log,user_id,code);

в sql консоли запустить
Ответ написан
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
В настройках поля ID уберите AUTO_INCREMENT - возможно и измените PRIMARY ключ...

Но создаётся впечатление, что в облаке использовалась другая система/версия SQL.
Потому что PRIMARY не на AUTO_INCREMENT-ном ключе? Это как? Это что? И куда этот мир катится?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы