tdbc::mysql 1.1.3在mariadb-libs 10.5.11+执行allrows/prepare时段错误
tdbc::mysql 1.1.3 与高版本 MariaDB 库兼容性问题
问题概述
tdbc::mysql 1.1.3 存在版本兼容性限制:仅在 mariadb-libs 及 mariadb-clients 版本不高于10.5.11 的环境中能正常运行。当使用高于10.5.11版本的 mariadb-libs 时,调用 allrows 和 prepare 语句会直接触发段错误。
该问题已在安装 mariadb-client/mariadb-libs 10.6.9 的最新版 Arch Linux 和 Alpine Linux 服务器上复现,将 mariadb-libs 降级至10.5.11后,功能可恢复正常。
复现代码
package require tdbc::mysql namespace import ::tdbc::mysql::* connection create db -host 127.0.0.1 -port 3306 -passwd mypass -user root -database mydb # 所有配置下均可正常执行 db evaldirect "select product_id from product_to_category where category_id=555" # mariadb-libs 版本高于10.5.11时触发段错误 db allrows { select * from category_description } db prepare { select * from category_description }
Bug 状态说明
此问题已在 Tcl 官方核心库的 tdbcmysql 组件中被提交追踪(Bug 编号:79e85de788)。经确认,问题根源是 tdbc::mysql 1.1.3 未适配 MariaDB 10.6+ 版本客户端库的接口变化,导致 allrows 和 prepare 方法在处理结果集时出现内存访问错误,最终引发段错误。目前开发团队已收录该问题,后续会通过更新 tdbc::mysql 版本修复此兼容性问题。
内容的提问来源于stack exchange,提问作者wee wewewe
相关产品推荐
相关产品推荐

