【问题标题】:The Python and install mysqlConnectorPython 和安装 mysql 连接器
【发布时间】:2015-04-19 12:38:35
【问题描述】:

我有一些不舒服的麻烦...

我想安装mysqlconnector。 因此,我从 Oracle(msi) 中获取并安装它。

我打开了一个 PyCharm,毕竟是控制台。 我在那里写了检查连接:

import mysql.connector
mysql.connector.connect(host='localhost',database='mysql',user='root',password='')

语法很亮

我在控制台中遇到了问题:

Traceback (most recent call last):
  File "C:/Users/���������/PycharmProjects/prime_number/mys.py", line 2, in <module>
    mysql.connector.connect(host='localhost',database='mysql',user='root',password='')
  File "C:\Python27\lib\site-packages\mysql\connector\__init__.py", line 162, in connect
    return MySQLConnection(*args, **kwargs)
  File "C:\Python27\lib\site-packages\mysql\connector\connection.py", line 129, in __init__
    self.connect(**kwargs)
  File "C:\Python27\lib\site-packages\mysql\connector\connection.py", line 454, in connect
    self._open_connection()
  File "C:\Python27\lib\site-packages\mysql\connector\connection.py", line 417, in _open_connection
    self._socket.open_connection()
  File "C:\Python27\lib\site-packages\mysql\connector\network.py", line 472, in open_connection
    errno=2003, values=(self.get_address(), _strioerror(err)))
  File "C:\Python27\lib\site-packages\mysql\connector\errors.py", line 182, in __init__
    self.msg = self.msg % values
UnicodeDecodeError: 'ascii' codec can't decode byte 0xcf in position 6: ordinal not in range(128)

在 cmd 中同样... 据我了解 - 编码问题(utf-8 或类似的) 我必须做什么样的解决方案? 谢谢!

【问题讨论】:

    标签: python mysql decode encode connector


    【解决方案1】:

    当尝试连接到一个不存在的 mysql 服务器时,我会得到完全相同的回溯,除了最后一个追踪我会得到一个错误消息:

      File "/usr/lib/python2.7/dist-packages/mysql/connector/network.py", line 386, in open_connection
        errno=2003, values=(self.get_address(), _strioerror(err)))
    mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on 'localhost:3306' (111 Connection refused)
    

    更改 Python 的区域设置时,最后一部分 (111 Connection refused) 将被翻译成我选择的语言。

    我怀疑您来自韩国(因为韩国的 UTF-8 字符以 0xcf 开头)并且您的 Python 会自动将语言环境设置为韩国语。然后network.py 中的函数_strioerror(err) 崩溃了。这将是 mysql.connector 包中的错误。

    作为一种解决方法,您应该将 Python 语言环境设置更改为默认值 'C'。要更改脚本的语言环境设置,请按如下方式进行更改:

    import mysql.connector
    import locale
    locale.setlocale(locale.LC_ALL, 'C')
    mysql.connector.connect(host='localhost',database='mysql',user='root',password='')
    

    之后您的程序将无法运行,但您会收到一条错误消息(英文),希望能帮助您找出问题。

    【讨论】:

    • 显然这个语言环境仍然无法正确解码:UnicodeDecodeError: 'ascii' codec can't decode byte 0xf3 in position 16: ordinal not in range(128)
    猜你喜欢
    • 2014-12-30
    • 2015-08-24
    • 1970-01-01
    • 2016-08-08
    • 2016-10-11
    • 1970-01-01
    • 2015-11-25
    • 2019-06-15
    • 2013-07-21
    相关资源
    最近更新 更多