Mac M1上Azure SQL Edge容器无法通过mysql.connector正常连接
解决Mac M1上Azure SQL Edge容器无法通过Python连接的问题
核心问题:驱动选型错误
Azure SQL Edge是SQL Server兼容数据库,并非MySQL,使用mysql.connector连接完全不匹配,这是导致连接无响应的根本原因。
正确解决步骤
1. 安装适配SQL Server的Python驱动
推荐使用官方支持的pyodbc,Mac M1环境下先安装依赖再装驱动:
brew install unixodbc pip install pyodbc
2. 修改Python连接代码
替换错误的mysql.connector,改用pyodbc编写正确的连接逻辑:
import pyodbc # 构建SQL Server连接字符串 conn_str = ( "DRIVER={ODBC Driver 18 for SQL Server};" "SERVER=localhost,1433;" "DATABASE=你的数据库名称;" # 注意此处填数据库名,而非表名dbo.Customers "UID=sa;" "PWD=bigStrongPwd1!;" "Encrypt=yes;" "TrustServerCertificate=yes;" ) try: connection = pyodbc.connect(conn_str, timeout=5) print("连接成功!") # 执行数据操作逻辑... connection.close() except pyodbc.Error as e: print(f"连接失败: {e}")
注意:
database参数需填写实际使用的数据库名(如默认的master或你自行创建的数据库),不能直接写表名- 由于Azure SQL Edge默认启用加密,需添加
Encrypt=yes和TrustServerCertificate=yes用于本地测试
3. 验证容器端口状态
可通过以下命令确认容器内1433端口是否正常监听:
docker exec sqledge netstat -an | grep 1433
若输出显示0.0.0.0:1433,说明端口映射无问题。
4. 关于浏览器访问1433端口的说明
1433是数据库TCP协议端口,并非HTTP端口,浏览器访问必然报错,属于正常现象,无需排查。
内容的提问来源于stack exchange,提问作者jcr7u
相关产品推荐
相关产品推荐

