Если вы получаете ошибку
|
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.
Для удаления лишних свойств:
- Зайдите в административную панель Битрикса.
- Перейдите в раздел “Настройки” -> “Типы информационных блоков” и выберите нужный тип инфоблока.
- В списке инфоблоков выберите нужный инфоблок и перейдите в его редактирование.
- В разделе “Свойства элементов” выделите ненужные свойства и удалите их.
- Сохраните изменения.
