MySQL C API несколько операторов - PullRequest
0 голосов
/ 09 мая 2011

Итак, я создаю программу на C, которая подключается к базе данных mySQL.Все работало отлично.Затем, чтобы сэкономить на количестве запросов, я решил, что хотел бы выполнять 10 операторов одновременно.Я установил флаг "CLIENT_MULTI_STATEMENTS" в соединении и разделил мои утверждения точкой с запятой.

Когда я выполняю первый пакет из 10 операторов, он завершается успешно, и mysql_real_query () возвращает 0.

Когда я пытаюсь выполнить второй пакет, он возвращает «1» и неРабота.Нигде не могу найти, что означает этот код ошибки «1», поэтому я надеялся, что кто-то мог столкнуться с этой проблемой раньше.

Обратите внимание, что это все операторы UPDATE, поэтому мне не нужны наборы результатовЭто всего лишь несколько прямых вызовов mysql_real_query ().

Ответы [ 2 ]

2 голосов
/ 09 мая 2011

Из документации неясно, возвращены ли ошибки, которые может вызвать эта функция, или нет, но должна быть возможность получить фактическую ошибку, используя mysql_error ().циклически просматривайте наборы результатов независимо от того, интересны они вам или нет.

2 голосов
/ 09 мая 2011

Это подготовленные заявления?Если это так, то вы не можете использовать CLIENT_MULTI_STATEMENTS.

Кроме того, обратите внимание (из http://dev.mysql.com/doc/refman/5.5/en/c-api-multiple-queries.html), что:

После обработки результата из первого оператора, этонеобходимо проверить, существуют ли еще результаты, и обработать их по очереди, если это так. Для поддержки обработки нескольких результатов API C включает функции mysql_more_results () и mysql_next_result (). Эти функции используются в конце цикла, который повторяется какДо тех пор, пока доступно больше результатов. Невозможность обработать результат таким способом может привести к обрыву соединения с сервером.

Вы должны просмотреть все результаты независимо от того, заботитесь ли вы о них или нет.значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...