Я написал интерфейс для базы данных myqsl, который в случае возникновения ошибки, например, если база данных была отключена, обрабатывает ее, вызывая мою пользовательскую ошибку, чтобы я знал, что не так. Я был доволен этим и решил, что он готов для преобразования в exe, и сделал это с помощью py2exe. это не удалось, и после некоторого исследования я обнаружил, что он больше не работает, поэтому я опустился до Python 3.4. Теперь он конвертируется, но преобразованная программа больше не обрабатывает ошибки.
Я проверил, есть ли у меня правильный соединитель mysql, и заново загрузил точно такой же, чтобы он включался в качестве ошибки, которую я обрабатываю, обычно это mysql.connector.Error.
Обработка ошибок в исходной программе:
import myqsl.connector as mariadb
try:
mariadb_connection = mariadb.connect(user='root', password='', database='marsmenagerie')
cursor = mariadb_connection.cursor()
except mariadb.Error:
clearscreen()
print("Failed to connect to Database. (Error: 2475JWRT), Contact Censored")
print("===========================")
PAUSE()
exit()
Ошибка, которую преобразованная программа создает, если возникнет эта ошибка:
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\mysql\connector\network.py", line 525, in open_connection
self.sock.connect(sockaddr)
ConnectionRefusedError: [WinError 10061] Kan geen verbinding maken omdat de doelcomputer de verbinding actief heeft geweigerd
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\mysql\connector\locales\__init__.py", line 56, in get_client_error
globals(), locals(), ['client_error'])
ImportError: No module named 'mysql.connector.locales.eng'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\mysql\connector\connection.py", line 245, in _open_connection
self._socket.open_connection()
File "C:\Python34\lib\site-packages\mysql\connector\network.py", line 528, in open_connection
errno=2003, values=(self.get_address(), _strioerror(err)))
File "C:\Python34\lib\site-packages\mysql\connector\errors.py", line 187, in __init__
self.msg = get_client_error(self.errno)
File "C:\Python34\lib\site-packages\mysql\connector\locales\__init__.py", line 59, in get_client_error
language))
ImportError: No localization support for language 'eng'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\mysql\connector\network.py", line 148, in send_plain
self.sock.sendall(packet)
OSError: [WinError 10057] Een aanvraag om gegevens te verzenden of te ontvangen is niet toegestaan omdat de socket niet is verbonden en omdat (tijdens het verzenden op een datagramsocket via een sendto-aanroep) geen adres is opgegeven
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\mysql\connector\locales\__init__.py", line 56, in get_client_error
globals(), locals(), ['client_error'])
ImportError: No module named 'mysql.connector.locales.eng'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\mysql\connector\connection.py", line 102, in __init__
self.connect(**kwargs)
File "C:\Python34\lib\site-packages\mysql\connector\abstracts.py", line 731, in connect
self._open_connection()
File "C:\Python34\lib\site-packages\mysql\connector\connection.py", line 256, in _open_connection
self.close()
File "C:\Python34\lib\site-packages\mysql\connector\connection.py", line 276, in close
self.cmd_quit()
File "C:\Python34\lib\site-packages\mysql\connector\connection.py", line 617, in cmd_quit
self._socket.send(packet, 0, 0)
File "C:\Python34\lib\site-packages\mysql\connector\network.py", line 151, in send_plain
errno=2055, values=(self.get_address(), _strioerror(err)))
File "C:\Python34\lib\site-packages\mysql\connector\errors.py", line 187, in __init__
self.msg = get_client_error(self.errno)
File "C:\Python34\lib\site-packages\mysql\connector\locales\__init__.py", line 59, in get_client_error
language))
ImportError: No localization support for language 'eng'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\mysql\connector\network.py", line 148, in send_plain
self.sock.sendall(packet)
OSError: [WinError 10057] Een aanvraag om gegevens te verzenden of te ontvangen is niet toegestaan omdat de socket niet is verbonden en omdat (tijdens het verzenden op een datagramsocket via een sendto-aanroep) geen adres is opgegeven
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\mysql\connector\locales\__init__.py", line 56, in get_client_error
globals(), locals(), ['client_error'])
ImportError: No module named 'mysql.connector.locales.eng'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "program.py", line 16, in <module>
File "C:\Python34\lib\site-packages\mysql\connector\__init__.py", line 173, in connect
return MySQLConnection(*args, **kwargs)
File "C:\Python34\lib\site-packages\mysql\connector\connection.py", line 105, in __init__
self.close()
File "C:\Python34\lib\site-packages\mysql\connector\connection.py", line 276, in close
self.cmd_quit()
File "C:\Python34\lib\site-packages\mysql\connector\connection.py", line 617, in cmd_quit
self._socket.send(packet, 0, 0)
File "C:\Python34\lib\site-packages\mysql\connector\network.py", line 151, in send_plain
errno=2055, values=(self.get_address(), _strioerror(err)))
File "C:\Python34\lib\site-packages\mysql\connector\errors.py", line 187, in __init__
self.msg = get_client_error(self.errno)
File "C:\Python34\lib\site-packages\mysql\connector\locales\__init__.py", line 59, in get_client_error
language))
ImportError: No localization support for language 'eng'
Я знаю, это долго. И я стараюсь сделать его как можно более коротким, но я не хочу скрывать информацию, которая может иметь отношение к делу. Возможно, моя самая большая проблема с изготовлением MCVE.
Я ожидал, что это вызовет ошибку, которую я закодировал. Однако это просто вызывает ошибку, показанную выше. При запуске с активной базой данных программа работает нормально.