使用mysql.connector for python连接数据库时出错

2024-04-20 03:55:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手,刚开始是实现小程序,现在尝试连接数据库,我安装了python 3.4和mysql.connector 2.0.4。 下面是我用来连接数据库的代码

#!"C:\python34\python.exe"
import sys
import mysql.connector
print("Content-Type: text/html;charset=utf-8")
print()
conn = mysql.connector.connect(host='localhost:8051',
                                       database='test',
                                       user='root',
                                       password='tiger')

if conn.is_connected():
    print('Connected to MySQL database')

但我得到的错误如下所示。由于安装环境错误或其他原因,无法获取发生此错误的原因 请建议

Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\mysql\connector\network.py", line 448, in open_connection
    socket.SOL_TCP)
  File "C:\Python34\lib\socket.py", line 533, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno 11004] getaddrinfo failed

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<pyshell#8>", line 2, in <module>
    password='tiger',database='test')
  File "C:\Python34\lib\site-packages\mysql\connector\__init__.py", line 179, in connect
    return MySQLConnection(*args, **kwargs)
  File "C:\Python34\lib\site-packages\mysql\connector\connection.py", line 95, in __init__
    self.connect(**kwargs)
  File "C:\Python34\lib\site-packages\mysql\connector\abstracts.py", line 719, in connect
    self._open_connection()
  File "C:\Python34\lib\site-packages\mysql\connector\connection.py", line 209, in _open_connection
    self._socket.open_connection()
  File "C:\Python34\lib\site-packages\mysql\connector\network.py", line 464, in open_connection
    errno=2003, values=(self.get_address(), _strioerror(err)))
mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on 'localhost:8051:3306' (11004 getaddrinfo failed)

Tags: inpyconnectorlibpackagesconnectlinemysql
3条回答

错误信息非常清楚:

 Can't connect to MySQL server on 'localhost:8051:3306'

看到双端口定义了吗?

host='localhost:8051'

很可能是

host='localhost', port='8051'

MySQL的默认端口是3306,当您不将“Port”参数传递给MySQL.connector.connect时,它假定您使用的默认端口是3306,如果您使用其他端口,则应传递:

port=xxxx

给构造器。

连接参数使用错误。我认为你需要这样做:

conn = mysql.connector.connect(host='localhost',
                               port=8051,
                               database='test',
                               user='root',
                               password='tiger')

查看此doc了解更多详细信息。

相关问题 更多 >