我正在使用“MySQL Connector for 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”)。
我最近用 MariaDB 10.3.13 替换了 MySQL 5.6.35 服务器。相同的查询mysql_warning_count()
现在返回 0 个警告。但是,SHOW WARNINGS
仍会列出警告(如预期的那样)。
我尝试用最新的 MariaDB Connector/C (v3.1.6) 替换旧的 MySQL 连接器库,但问题仍然存在。
什么会导致不报告查询警告?我是否需要在某处设置标志,或应用一些兼容性设置?
使用的 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)