sgtpep / woocommerce-1c

Provides data exchange between the WooCommerce plugin for WordPress and the business application "1C:Enterprise 8. Trade Management" (and compatible ones).
https://wordpress.org/plugins/woocommerce-and-1centerprise-data-exchange/
GNU General Public License v3.0
69 stars 41 forks source link

Ошибка при активации Specified key was too long; #37

Open ipolikarpov opened 4 years ago

ipolikarpov commented 4 years ago

При активации плагина в веб-интерфейсе появляется ошибка:

Плагин создал 816 символов неожиданного вывода при активации. Если возникнет ошибка “headers already sent” с RSS-лентами или иные проблемы, то попробуйте деактивировать или удалить этот плагин.

В debug.log три идентичных ошибки:

База данных WordPress возвратила ошибку Specified key was too long; max key length is 1000 bytes в ответ на запрос ALTER TABLE wp_usermeta ADD INDEX wc1c_meta_key_meta_value (meta_key, meta_value(36)), выполненный activate_plugin, do_action('activate_woocommerce-and-1centerprise-data-exchange/woocommerce-1c.php'), WP_Hook->do_action, WP_Hook->apply_filters, wc1c_activate

Версии ПО: WP 5.3.1 WC 3.8.1 MySQL Ver 14.14 Distrib 5.7.28

sgtpep commented 4 years ago

Здравствуйте! А можете в коде плагина, где содержится строка ADD INDEX wc1c_meta_key_meta_value попробовать заменить meta_key, на meta_key(125), и повторно активировать плагин?

ipolikarpov commented 4 years ago

Спасибо большое за оперативную реакцию! Да, это помогло.

Правда, теперь в дебагe появился нотайс

PHP Notice: Undefined offset: 1 in /wp-content/plugins/woocommerce-and-1centerprise-data-exchange/admin.php on line 28

sgtpep commented 4 years ago

Тогда нужно повыводить через var_dump() что там помещается в $guid в 27 строке в /wp-content/plugins/woocommerce-and-1centerprise-data-exchange/admin.php.

Интересно, это у всех пользователей wordpress проявляется или только в вашем случае (например, какие-то нестандартные умолчания в mysql).

ipolikarpov commented 4 years ago

Причина нотайса:

Function get_woocommerce_term_meta WooCommerce Term Meta API WC tables for storing term meta are deprecated from WordPress 4.4 since 4.4 has its own table. This function serves as a wrapper, using the new table if present, or falling back to the WC table.

https://docs.woocommerce.com/wc-apidocs/function-get_woocommerce_term_meta.html

Функция get_woocommerce_term_meta с версии 3.6 считается устаревшей! Используйте get_term_meta

Функция используется в строке 27 файла admin.php, её необходимо заменить на WP-функцию get_term_meta.

Vladij commented 3 years ago

Тогда нужно повыводить через var_dump() что там помещается в $guid в 27 строке в /wp-content/plugins/woocommerce-and-1centerprise-data-exchange/admin.php.

Интересно, это у всех пользователей wordpress проявляется или только в вашем случае (например, какие-то нестандартные умолчания в mysql).

пустая строка приходит если категория не с 1С