Я боялся этого ... но после немалой работы у меня есть ответ на мой вопрос и решение проблемы. (да, я ленивый кодер ... я надеялся, что кто-то другой скажет мне, что все это необходимо ... хе-хе)
Вот мой собственный авторитетный ответ на встроенный сервер + подготовленные утверждения, не рабочий вопрос.
вопрос: поддерживаются ли stmts во встроенных? ответ ... они должны быть, но это не так.
Да, во встроенном mysql есть ошибка в отношении stmts. Увидеть:
http://bugs.mysql.com/bug.php?id=62136
Мистер Ци Чжоу имеет все мое уважение. Он каким-то образом определил, что при запуске встроенного mysql_stmt_execute () неправильно устанавливал статус результата как «MYSQL_STATUS_GET_RESULT» вместо «MYSQL_STATUS_STATEMENT_GET_RESULT» (т. Е. Рассматривал stmt как нестатистический) ошибка. Так что это требует исправления самого исходного кода.
Как это сделать ..
Страница MySql "Как построить на Windows" здесь: http://dev.mysql.com/doc/refman/5.5/en/source-installation.html
ссылается на это гораздо проще для чтения, КАК СТРОИТЬ:
http://www.chriscalender.com/?p=689
Дополнительные HOW-TO примечания, которые я определил в процессе
Крис, как это для VS2008 Express. Я использую 2010 Pro и узнал, что cmake -G arg может быть опущен. Для меня 2010 год был автоматически определен как используемый компилятор.
Я только установил cmake и bison. Perl и Bazaar не требуются для этого. и я получил стандартный дистрибутив 5.5.22 вместо того, чтобы тянуть с базара.
re: установка бизона:
- Обязательно установите бизон на путь без пробелов
- НЕ разрешать установщику добавлять что-либо в меню «Пуск» (вызвано «m4.exe не
обнаружена «ошибка»
- вручную добавить папку bin бизона в системный PATH
re: signtool.exe
убедитесь, что путь к signtool добавлен в PATH. Пример (для меня)
- c: \ Program Files \ Microsoft SDKs \ Windows \ v7.0A \ bin
Загрузить исходный дистрибутив MySql (http://dev.mysql.com/downloads/mysql/#downloads):
Универсальный Linux (независимый от архитектуры), сжатый архив TAR (mysql-5.5.22.tar.gz)
Вам нужно отредактировать {D: \ your_path} \ mysql-5.5.22 \ libmysqld \ lib_sql.cc
В строке 340 вы увидите:
if (res)
{
NET *net= &stmt->mysql->net;
set_stmt_errmsg(stmt, net);
DBUG_RETURN(1);
}
//ADD CODE HERE
DBUG_RETURN(0);
Вставьте между кодовым блоком if и DBUG_RETURN (0) следующее:
//kgk 2012/04/11 - see http://bugs.mysql.com/bug.php?id=62136
// Qi Zhou's modification to allow prep'd stmts to work
else if (stmt->mysql->status == MYSQL_STATUS_GET_RESULT)
{
stmt->mysql->status= MYSQL_STATUS_STATEMENT_GET_RESULT;
}
И создайте себе новую версию libmysqld.dll, libmysqld.lib, libmysqld.pdb
и проблема исправлена.
Когда вы собрали dll, не поступайте так, как я, и забудьте переместить новую DLL в папку вашего исполняемого файла и сядьте, размышляя, почему изменения ничего не сделали. Вздох.
К вашему сведению: комментарий к сообщению о технике оракула с тегом [20 февр. 18:34] Света Смирнова
полная ерунда. serverARgs не имеет ничего общего.