MySQL 连接器/字符集/两个连接

问题描述 投票:0回答:1

我在使用 python、mysql.connector (8.1.0) 时遇到问题,并尝试在 2 个不同的服务器上打开 2 个连接:

如果我跑步:

from mysql.connector import MySQLConnection

if __name__ in '__main__':
    
    # A
    try:
        c1 = MySQLConnection(
            host='host1',
            user='*',
            password='*',
            database='A'
        )
        c1.close()
    except Exception as e:
        print(e)
    finally:
        print('c1')
    
    # B
    try:
        c2 = MySQLConnection(
            host='host2',
            user='*',
            password='*',
            database='B'
        )
        c2.close()
    except Exception as e:
        print(e)
    finally:
        print('c2')

我遇到了例外:

Character set 'utf8' unsupported
对于 c2

如果我只运行 B 部分,那就没问题。就好像第一次连接后全局设置了某些内容。

有什么想法吗?

python mysql-connector charset
1个回答
0
投票

如果两个连接(c1 和 c2)在单独运行时工作正常,但在一起运行时产生“c2 不支持字符集‘utf8’”错误,则可能是由于两个连接之间的字符集配置存在兼容性问题。您可以尝试以下步骤:

为两个连接指定字符集: 显式指定两个连接的字符集,以确保它们使用相同的字符集。例如,您可以对两个连接使用“utf8mb4”

c1 = MySQLConnection(
    host='host1',
    user='*',
    password='*',
    database='A',
    charset='utf8mb4'
)

c2 = MySQLConnection(
    host='host2',
    user='*',
    password='*',
    database='B',
    charset='utf8mb4'
)

使用单独的连接实例:确保您不会无意中在两个连接(c1 和 c2)之间共享连接实例。每个连接都应该有自己单独的实例。

© www.soinside.com 2019 - 2024. All rights reserved.