Почему возникает ошибка при изменении языкозависимых названий элементов блока высокой нагрузки?

Как исправить ошибку "Require multi primary {`ID`, `LID`}, but one scalar value "18" found when trying to query HighloadBlockLang row (100)" в Bitrix?
  • 9 августа 2024 г. 10:23
Ответы на вопрос 2
Ошибка "Require multi primary {`ID`, `LID`}, but one scalar value "18" found when trying to query HighloadBlockLang row (100)" возникает из-за того, что при попытке обновить языкозависимые названия элементов блока высокой нагрузки в базе данных Bitrix было найдено только одно скалярное значение вместо необходимой комбинации первичных ключей {`ID`, `LID`}.

Для исправления этой ошибки вам нужно добавить недостающий компонент в запрос, чтобы он соответствовал требованиям множественных первичных ключей {`ID`, `LID`} в таблице HighloadBlockLang. Проверьте запрос на обновление данных и убедитесь, что он правильно сформулирован.

Вот пример правильного запроса для обновления языкозависимых названий элементов блока высокой нагрузки в Bitrix:

```sql
UPDATE `my_highloadblock_lang_table` SET `NAME` = 'New Name' WHERE `ID` = 18 AND `LID` = 'en';
```

Убедитесь, что вы правильно указали значение для обоих компонентов первичного ключа, чтобы избежать ошибки.
Да это действительно баг. Неверно записываются поля в базу. А именно при сохранении происходит попытка записать RU и EN название вашего хайлоадблока. 

Нашёл способ чтобы не появлялась ошибка.
Нужно зайти в таблицу b_hlblock_entity_lang и удалить все записи.
По сути вы удаляете просто Ru и En названия хайлоадблоков, на работе это ни как не скажется. Будут показываться просто названия (Название сущности) ваших блоков на анлийском.

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