Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Erro ao rodar prepara_banco.py

Ao rodar o prepara_banco.py recebo o seguinte retorno:

C:\Users\joaog\PycharmProjects\jogoteca\venv\Scripts\python.exe C:/Users/joaog/PycharmProjects/jogoteca/prepara_banco.py
Conectando...
Traceback (most recent call last):
  File "C:/Users/joaog/PycharmProjects/jogoteca/prepara_banco.py", line 3, in <module>
    conn = MySQLdb.connect(user='root', passwd='admin', host='127.0.0.1', port=3306)
  File "C:\Users\joaog\PycharmProjects\jogoteca\venv\lib\site-packages\MySQLdb\__init__.py", line 84, in Connect
    return Connection(*args, **kwargs)
  File "C:\Users\joaog\PycharmProjects\jogoteca\venv\lib\site-packages\MySQLdb\connections.py", line 164, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
MySQLdb._exceptions.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")

Process finished with exit code 1

mesmo olhando posts antigos não consegui encontrar uma solução...

3 respostas

Olá João,

Confere se o usuário e senha do seu banco de dados estão corretos no seu código, parece que é isso que está causando o erro.

acho que conseguir corrigir o problema da senha, mas agora esta apresentando outro erro..

C:\Users\joaog\PycharmProjects\jogoteca\venv\Scripts\python.exe C:/Users/joaog/PycharmProjects/jogoteca/prepara_banco.py
Conectando...
Traceback (most recent call last):
  File "C:/Users/joaog/PycharmProjects/jogoteca/prepara_banco.py", line 6, in <module>
    conn.cursor().execute("DROP DATABASE `jogoteca`;")
  File "C:\Users\joaog\PycharmProjects\jogoteca\venv\lib\site-packages\MySQLdb\cursors.py", line 206, in execute
    res = self._query(query)
  File "C:\Users\joaog\PycharmProjects\jogoteca\venv\lib\site-packages\MySQLdb\cursors.py", line 312, in _query
    db.query(q)
  File "C:\Users\joaog\PycharmProjects\jogoteca\venv\lib\site-packages\MySQLdb\connections.py", line 224, in query
    _mysql.connection.query(self, query)
MySQLdb._exceptions.OperationalError: (1008, "Can't drop database 'jogoteca'; database doesn't exist")
solução!

O problema agora é que o código está tentando excluir o banco jogoteca, mas esse banco não existe.

Faz essa alteração no seu arquivo e vê se dá certo:

  1. Remova essa parte:

    conn.cursor().execute("DROP DATABASE `jogoteca`;")
  2. E substitua por isso:

    conn.cursor().execute("DROP DATABASE IF EXISTS `jogoteca`;")

Note a adição do IF EXISTS no sql, que evita a execução desse sql caso o banco não exista, assim evitando o erro.