mysqlx connector不支持大整数,插入时触发溢出报错
MySQLX Python驱动大整数支持问题:这是Bug,附反馈渠道
问题确认
这确实是一个bug。MySQLX Python驱动的整数类型仅实现了v_signed_int和v_unsigned_int两种32位整数类型,未处理超过32位范围的大整数。当插入的整数超出32位有符号/无符号整数范围时,消息序列化过程会因溢出未处理抛出异常,导致插入失败,仅能成功插入32位范围内的小整数数据。
复现场景
环境配置:
- MySQL 8.0,开启mysqlx端口33060
- 依赖版本:mysqlclient2.2.0、mysql-connector-python8.0.33
复现代码:
import mysqlx session = mysqlx.get_session({ 'host': 'localhost', 'port': 33060, 'user': 'redacted', 'password': 'redacted', }) document1 = { '_id': 'unique-name-1', 'small': 888888888, 'stuff': 'other stuff', } document2 = { '_id': 'unique-name-2', 'large': 8888888888, 'stuff': 'other stuff', } try: db = session.create_schema('databasename') except: db = session.get_schema('databasename') try: collection = db.create_collection('tablename') except: collection = db.get_collection('tablename') try: collection.add(document1).execute() collection.add(document2).execute() print('done') except Exception as e: print(type(e)) print(e)
执行后报错:
<class 'SystemError'> <built-in function serialize_message> returned a result with an exception set
反馈渠道
- MySQL官方Bug跟踪系统:这是最直接的反馈途径,该问题属于Connector/Python(mysql-connector-python)组件范畴,提交时需注明驱动版本、MySQL版本、完整复现步骤及报错信息。
- mysql-connector-python代码仓库:在其官方代码托管平台提交Issue,详细描述问题细节与复现方式。
- MySQL官方社区论坛:在对应板块发布问题,寻求官方人员或社区开发者的协助。
内容的提问来源于stack exchange,提问作者Kenny Ostrom
相关产品推荐
相关产品推荐

