Я использую «MySQL Connector для C v6.1.11» для подключения к MySQL 5.6.35 серверу.
Когда я использую mysql_real_query()
для выполнения запроса, подобного SELECT MAKETIME(-1000,57,33)
, mysql_warning_count()
правильно возвращает 1 предупреждение (SHOW WARNINGS
скажет «Усеченное неверное значение времени: -1000: 57: 33»).
Недавно я заменил вставку вместо MySQL 5.6. 35 сервер с MariaDB 10.3.13. mysql_warning_count()
того же запроса теперь возвращает 0 предупреждений . Однако SHOW WARNINGS
будет по-прежнему перечислять предупреждение (как и ожидалось).
Я попытался заменить мою старую библиотеку MySQL Connector последней версией MariaDB Connector / C (v3.1.6) ), но проблема сохраняется.
Что может привести к тому, что предупреждения о запросах не будут отображаться? Нужно ли где-то устанавливать флаг или применять некоторые параметры совместимости?
SQL Используется режим по умолчанию, а именно: Для MySQL 5.6: NO_ENGINE_SUBSTITUTION
Для MariaDB 10.3: STRICT_TRANS_TABLES, ERROR_FOR_DIVISION_BY_ZERO , NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION
Единственные флаги клиента, переданные mysql_real_connect()
: CLIENT_MULTI_STATEMENTS | CLIENT_MULTI_RESULTS
(оба для MySQL и MariaDB)