1. Приветствуем Вас на неофициальном форуме технической поддержки XenForo на русском языке. XenForo - коммерческий форумный движок от бывших создателей vBulletin, написанный на PHP.

Проблема с Mysqli: "Prepared statement needs to be re-prepared"

Тема в разделе "Баги XenForo", создана пользователем sparhawk, 01.12.2010.

Загрузка
  1. Бboris

    Бboris Тролль

    Регистрация:
    20.08.11
    Сообщения:
    205
    Симпатии:
    33
    Каковы минимальные системные требования для XenForo?
    http://www.xf-russia.ru/xenforo/faq.html#sys-reqs

    [Модератор: заменил, ибо FAQ по этому вопросу есть и на русском]
     
  2. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Это проблема не версии MySQL, а версии клиента, через которую PHP общается с сервером MySQL.
     
  3. Flanker

    Flanker Местный

    Регистрация:
    19.05.11
    Сообщения:
    155
    Симпатии:
    27
    Версия XF:
    1.2.2
    Спасибо, капитан. Выше я писал, что версия у меня 5.1.57
    Можно подробнее? У меня VDS'ка, что мне надо обновить?
     
  4. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    ну названия могут варьироваться в зависимости от дистрибутивов и репозитариев.
    например для centos-а 64 битного они будут такие:
    mysql.i386 : MySQL client programs and shared libraries
    mysql.x86_64 : MySQL client programs and shared libraries
    mysql-server.x86_64 : The MySQL server and related files
    ну и в придачу пхп расширения:
    php-mysql.x86_64 : A module for PHP applications that use MySQL databases.
    php53-mysql.x86_64 : A module for PHP applications that use MySQL databases

    В Вашем случае у на сервере скорее всего mysql-server - одной версии, а просто mysql - другой
     
    Flanker нравится это.
  5. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Для дистрибутивов Debian сервер - mysql-server, клиент - mysql-client, библиотека - libmysqlclient16. Они должны быть одинаковой версии.
     
    Flanker нравится это.
  6. Union

    Union Местный

    Регистрация:
    12.10.11
    Сообщения:
    306
    Симпатии:
    86
    Версия XF:
    1.1.2
    Сидел на 1.0.4 - все было отлично, обновился на 1.1 бета 2 - вылезла эта ошибка, установлено на сервере :
    mysql.x86_64 5.1.59-1.el6.art
    mysql-libs.x86_64 5.1.59-1.el6.art
    mysql-server.x86_64 5.1.59-1.el6.art
    и мемкэш, отрубил мемкэш - ошибок стало меньше, и сыпятся теперь в основном в админке, что делать?
     
  7. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Возможно, библиотека libmysqlclient или как там у Вас она называется, не той версии клиента содержит. Расширение mysqli в PHP работает через библиотеку (оно должно быть слинковано с ней), если я все правильно понимаю. Таким образом, у Вас где-то версии не сходятся, либо библиотеки (что скорее всего), либо расширения PHP с библиотекой и сервером.
     
  8. Desperado

    Desperado Местный

    Регистрация:
    23.10.10
    Сообщения:
    270
    Симпатии:
    98
    Версия XF:
    1.1.3
    в 5й версии уже не нужно никаких библиотек.
    MySQLi идёт "в коробке" с PHP

    А если на хосте до сих пор 4я версия, бежать с него надо.
     
  9. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    А где там 4-я версия??
     
  10. Union

    Union Местный

    Регистрация:
    12.10.11
    Сообщения:
    306
    Симпатии:
    86
    Версия XF:
    1.1.2
    php установленный, с модулями:
    php.x86_64 5.3.8-1.el6.art
    php-cli.x86_64 5.3.8-1.el6.art
    php-common.x86_64 5.3.8-1.el6.art
    php-gd.x86_64 5.3.8-1.el6.art
    php-mbstring.x86_64 5.3.8-1.el6.art
    php-mcrypt.x86_64 5.3.8-1.el6.art
    php-mysql.x86_64 5.3.8-1.el6.art
    php-pdo.x86_64 5.3.8-1.el6.art
    php-pear.noarch 1:1.9.1-1.el5
    php-pecl-igbinary.x86_64
    1.1.1-3.el6
    php-pecl-memcache.x86_64
    3.0.5-3.el6
    php-pecl-memcached.x86_64
    1.0.2-9.el6.remi
    php-xml.x86_64 5.3.8-1.el6.art
    Очень нужно разобраться и включить memcached, помогите...
    Ну вообще я сам себе хостер, но с этими тонкостями никогда до этого не встречался, и что самое странное на 1.0.4 все работало как часы.
    --- добавлено : Oct 12, 2011 2:04 PM ---
    mysqlclient у меня входит в mysql-libs.x86_64 5.1.59-1.el6.art, если я все правильно понимаю
     
  11. Desperado

    Desperado Местный

    Регистрация:
    23.10.10
    Сообщения:
    270
    Симпатии:
    98
    Версия XF:
    1.1.3
    Это к слову было, о расширениях и библиотеках.
     
  12. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Начнем с того, что я не заметил там mysqli. Он как-то отдельно ставится в центосе?
    Ну и все же я настаиваю, что mysqlclient в принципе не имеет отношения к PHP. Т.е. нужна совместимость сервера mysql, библиотеки libmysqlclient16 и PHP расширения mysqli.
    Ошибка возникает из-за несовместимости или старых версий mysql и libmysqlclient16. А PHP расширение mysqli слинковано как раз с библиотекой libmysqlclient16.
     
  13. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    расширение php для mysql которое не требует библиотек идет под названием php-mysqlnd
     
  14. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Это тут не при чем. Тут ведь важно, совпадают ли версии. Ошибка проявляется лишь при несовпадении версий. Да и работа через mysql и mysqli таки отличается.
     
  15. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    я просто ответил на сообщение о том что mysqli в 5.3.х не требует libmysqlclient. Т.е. оно может не требовать, но только когда установлено спец расширение пхп, а не стандартный mysqli.
     
  16. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Хм. И как оно работает с сервером мускула? Можно, конечно библиотеку сразу в расширение загнать, чтобы не быть к ней привязанным, но это все равно не избавляет от потенциальных проблем с совместимостью версий. Может это спец расширение именно так и собрано (без линковки с библиотекой, но по факту просто все в самом расширении собрано?).
     
  17. Union

    Union Местный

    Регистрация:
    12.10.11
    Сообщения:
    306
    Симпатии:
    86
    Версия XF:
    1.1.2
    Хм, если бы не работало без библиотеки, разве пахал бы сайт на 1.0.4 спокойно 2 недели? И почему ошибки сыпятся в основном если подключить memcache? Может все же косяк со стороны xenforo?
     
  18. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Действительно, странно, но именно такая ошибка не является багом движка. Давайте вернемся к самому началу. Кидайте сюда:
    1. Полный лог ошибки.
    2. Конфигурацию PHP (вывод функции phpinfo).
    3. Версию ОС.
    4. Версии ПО, связанные с MySQL.

    А можно сразу попробовать где-нибудь в виртуалке с нуля поднять аналог Вашей системы и посмотреть, будет ли такая ошибка появляться. Если нет, то значит у Вас какой-то специфичный набор софта, который и дает эту ошибку. Повторюсь, это не ошибка движка ксена, это проблема с конкретными версиями MySQL и компонентами, которые с ним взаимодействуют.
     
  19. Union

    Union Местный

    Регистрация:
    12.10.11
    Сообщения:
    306
    Симпатии:
    86
    Версия XF:
    1.1.2
    :D Самый угар в том, что параллельно главному сайту стоял тестовый на том же сервере, с версией 1.1.0 бета 2, стоял 3 дня спокойно, пока я на нем тестил аддоны и шаблоны, ничего не вылезало. Как только обновил главный - повылазило.
    Код:
    Информация об ошибке
    Zend_Db_Statement_Mysqli_Exception: Mysqli statement execute error : Prepared statement needs to be re-prepared - library/Zend/Db/Statement/Mysqli.php:214
    Сгенерирована пользователем: *****, Вчера, в 13:19
    Трассировка стэка
    
    #0 /var/www/*****/data/www/*****/community/library/Zend/Db/Statement.php(297): Zend_Db_Statement_Mysqli->_execute(Array)
    #1 /var/www/*****/data/www/*****/community/library/Zend/Db/Adapter/Abstract.php(479): Zend_Db_Statement->execute(Array)
    #2 /var/www/*****/data/www/*****/community/library/Zend/Db/Adapter/Abstract.php(574): Zend_Db_Adapter_Abstract->query('INSERT INTO `xf...', Array)
    #3 /var/www/*****/data/www/*****/community/library/XenForo/DataWriter.php(1571): Zend_Db_Adapter_Abstract->insert('xf_conversation...', Array)
    #4 /var/www/*****/data/www/*****/community/library/XenForo/DataWriter.php(1560): XenForo_DataWriter->_insert()
    #5 /var/www/*****/data/www/*****/community/library/XenForo/DataWriter.php(1362): XenForo_DataWriter->_save()
    #6 /var/www/*****/data/www/*****/community/library/XenForo/DataWriter/ConversationMaster.php(264): XenForo_DataWriter->save()
    #7 /var/www/*****/data/www/*****/community/library/XenForo/DataWriter.php(1366): XenForo_DataWriter_ConversationMaster->_postSave()
    #8 /var/www/*****/data/www/*****/community/library/XenForo/ControllerPublic/Conversation.php(427): XenForo_DataWriter->save()
    #9 /var/www/*****/data/www/*****/community/library/XenForo/FrontController.php(310): XenForo_ControllerPublic_Conversation->actionInsert()
    #10 /var/www/*****/data/www/*****/community/library/XenForo/FrontController.php(132): XenForo_FrontController->dispatch(Object(XenForo_RouteMatch))
    #11 /var/www/*****/data/www/*****/community/index.php(13): XenForo_FrontController->run()
    #12 {main}
    
    Содержимое запроса
    
    array(3) {
      ["url"] => string(52) "http://*****/community/conversations/insert"
      ["_GET"] => array(0) {
      }
      ["_POST"] => array(9) {
        ["recipients"] => string(10) "*****"
        ["title"] => string(8) "*****"
        ["message_html"] => string(225) "<p>*****</p>"
        ["_xfRelativeResolver"] => string(63) "http://*****/community/conversations/add?to=*****"
        ["attachment_hash"] => string(32) "a12af48d8*****54d7427fac19b21a"
        ["_xfToken"] => string(55) "4**,131*****102,95c05ae8d*****15df0866c2d679c"
        ["_xfRequestUri"] => string(42) "/community/conversations/add?to=*****"
        ["_xfNoRedirect"] => string(1) "1"
        ["_xfResponseType"] => string(4) "json"
      }
    }
    [​IMG]
    [​IMG]
     
  20. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Да. Судя по всему, очень специфичная проблема, но версии сервера, библиотек и расширений соответствуют друг другу.
    Наверное, придется отправлять баг-репорт на оф ксена.
    Как вариант, попробовать сменить версию MySQL везде на более новую/старую. У меня используются версии 5.1.49 (Debian Squeezy) и 5.0.51a (Debian Lenny). На CentOS с серверами дело имел очень давно, поэтому не подскажу, что там используется.
     

Поделиться этой страницей