Если вы получаете ошибку
|
1 2 |
UNKNOWN - [Bitrix\Main\DB\SqlQueryException] Mysql query error: [1116] Too many tables; MySQL can only use 61 tables in a join (400) |
Это значит что вы создали слишком много пользовательских свойств в инфоблоке.
Решение
В настройках инфоблока изменить место хранения свойств.
Если не помогло, удалить лишние. По хорошему их должно быть не более 50-ти.
Подробнее
При работе с CMS Битрикс, особенно при разработке сложных проектов, разработчики могут столкнуться с ошибкой, которая звучит как «Mysql query error: Too many tables; MySQL can only use 61 tables in a join (400)». Эта ошибка обычно связана с наличием слишком многих пользовательских свойств в инфоблоках. В этой статье мы рассмотрим причины возникновения этой ошибки и предложим решения для её устранения.
Почему возникает ошибка «Too many tables»?
Ошибки, связанные с «слишком многими таблицами», обычно возникают при выполнении сложных запросов к базе данных, в которых используются соединения множества таблиц. В случае Битрикса, одной из наиболее распространенных причин этой ошибки является использование большого количества пользовательских свойств в инфоблоках.
По умолчанию, Битрикс хранит пользовательские свойства инфоблока в виде отдельных таблиц в базе данных. Это может привести к быстрому насыщению лимита таблиц, который MySQL может использовать в одном соединении (в данном случае — 61 таблица).
Решение проблемы: изменение места хранения свойств
Чтобы избежать ошибки «Too many tables», вам следует изменить место хранения пользовательских свойств инфоблока. Для этого выполните следующие действия:
- Зайдите в административную панель Битрикса.
- Перейдите в раздел «Настройки» -> «Настройки продукта» -> «Настройки модулей».
- Найдите модуль «Информационные блоки (iblock)» и перейдите в его настройки.
- В разделе «Инфоблоки» выберите инфоблок, для которого хотите изменить место хранения свойств.
- В настройках инфоблока найдите опцию «Хранить свойства в отдельных таблицах базы данных» и отключите её.
- Сохраните изменения.
Теперь пользовательские свойства инфоблока будут храниться в одной общей таблице, что снизит количество таблиц, используемых в запросах, и избавит от ошибки «Too many tables».
Если проблема осталась: удаление лишних свойств
В случае, если после изменения места хранения свойств проблема не была решена, вам, возможно, придется удалить лишние пользовательские свойства. Следует помнить, что оптимальное количество свойств в инфоблоке составляет не более 50-ти, и превышение этого числа может вызвать проблемы с производительностью и лимитами MySQL.
Для удаления лишних свойств:
- Зайдите в административную панель Битрикса.
- Перейдите в раздел «Настройки» -> «Типы информационных блоков» и выберите нужный тип инфоблока.
- В списке инфоблоков выберите нужный инфоблок и перейдите в его редактирование.
- В разделе «Свойства элементов» выделите ненужные свойства и удалите их.
- Сохраните изменения.
