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

Erro ao instalar MySQL - Windows

Quando coloco no terminal o comando pip3.exe install mysqlclient para instalar o MySQL, apresenta o erro abaixo: Running setup.py install for mysqlclient ... error ERROR: Command errored out with exit status 1: command: 'c:\users\admin\pycharmprojects\jogoteca\venv\scripts\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\Users\admin\AppData \Local\Temp\pip-install-8vd4ctl\mysqlclient\setup.py'"'"'; file='"'"'C:\Users\admin\AppData\Local\Temp\pip-install-8vd4ctl\mysqlclient\setup.py'"' "';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' i nstall --record 'C:\Users\admin\AppData\Local\Temp\pip-record-elszctq1\install-record.txt' --single-version-externally-managed --compile --install-headers 'c:\usersadmin\pycharmprojects\jogoteca\venv\include\site\python3.8\mysqlclient' cwd: C:\Users\admin\AppData\Local\Temp\pip-install-8vd4ctl\mysqlclient Complete output (29 lines): running install running build running buildpy creating build creating build\lib.win32-3.8 creating build\lib.win32-3.8\MySQLdb copying MySQLdb_init__.py -> build\lib.win32-3.8\MySQLdb copying MySQLdb\exceptions.py -> build\lib.win32-3.8\MySQLdb copying MySQLdb\connections.py -> build\lib.win32-3.8\MySQLdb copying MySQLdb\converters.py -> build\lib.win32-3.8\MySQLdb copying MySQLdb\cursors.py -> build\lib.win32-3.8\MySQLdb copying MySQLdb\release.py -> build\lib.win32-3.8\MySQLdb copying MySQLdb\times.py -> build\lib.win32-3.8\MySQLdb creating build\lib.win32-3.8\MySQLdb\constants copying MySQLdb\constants_init__.py -> build\lib.win32-3.8\MySQLdb\constants copying MySQLdb\constants\CLIENT.py -> build\lib.win32-3.8\MySQLdb\constants copying MySQLdb\constants\CR.py -> build\lib.win32-3.8\MySQLdb\constants copying MySQLdb\constants\ER.py -> build\lib.win32-3.8\MySQLdb\constants copying MySQLdb\constants\FIELDTYPE.py -> build\lib.win32-3.8\MySQLdb\constants copying MySQLdb\constants\FLAG.py -> build\lib.win32-3.8\MySQLdb\constants running build_ext building 'MySQLdb.mysql' extension creating build\temp.win32-3.8 creating build\temp.win32-3.8\Release creating build\temp.win32-3.8\Release\MySQLdb C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\bin\HostX86\x86\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -Dversioninfo =(2,0,0,'final',0) -D__version__=2.0.0 "-IC:\Program Files (x86)\MySQL\MySQL Connector C 6.1\include\mariadb" -Ic:\users\admin\pycharmprojects\jogoteca\venv\include -IC:\Users\admin\AppData\Local\Programs\Python\Python38-32\include -IC:\Users\admin\AppData\Local\Programs\Python\Python38-32\include "-IC:\Program Files (x86)\Micro soft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\ATLMFC\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.2880 1\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\winrt" "-IC:\Program Files (x86)\Windows Kits\10include\10.0.18362.0\cppwinrt" /TcMySQLdb/mysql.c /Fobuild\temp.win32-3.8\Release\MySQLdb/mysql.obj /Zl /D_CRT_SECURE_NO_WARNINGS mysql.c MySQLdb/mysql.c(29): fatal error C1083: NÆo ‚ poss¡vel abrir arquivo incluir: 'mysql.h': No such file or directory error: command 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\bin\HostX86\x86\cl.exe' failed with exit stat

us 2

ERROR: Command errored out with exit status 1: 'c:\users\admin\pycharmprojects\jogoteca\venv\scripts\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\Users\admin\AppData\Local\Temp\pip-install-8vd4ctl\mysqlclient\setup.py'"'"'; file='"'"'C:\Users\admin\AppData\Local\Temp\pip-install- 8vd4ctl\mysqlclient\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(co de, file, '"'"'exec'"'"'))' install --record 'C:\Users\admin\AppData\Local\Temp\pip-record-elszctq1\install-record.txt' --single-version-externally-managed --com pile --install-headers 'c:\users\admin\pycharmprojects\jogoteca\venv\include\site\python3.8\mysqlclient' Check the logs for full command output.

12 respostas

Oii Maico, como você está? Espero que esteja tudo bem ^-^

Tente executar o seguinte comando:

python3 -m pip install mysqlclient

Caso o erro persista, tente essa outra abordagem:

pip install wheel

Faça o download do Mysqlclient para sua versão do pyhton neste link. Por exemplo, o arquivo mysqlclient‑1.4.6‑cp38‑cp38‑win_amd64.whl é do python3.8 para um sistema operacional de 64 bits.

  • Agora, faça a instalação do arquivo que você baixou:
pip install mysqlclient‑1.4.6‑cp38‑cp38‑win_amd64.whl

Fico no aguardo.

Oi Nádia! Fico muito feliz que se lembra de mim. Tentei o que você sugeriu, mas não deu certo. Veja o que apareceu.

(venv) C:\Users\admin\PycharmProjects\jogoteca>pip install mysqlclient‑1.4.6‑cp38
‑cp38‑win_amd64.whl
WARNING: Requirement 'mysqlclient‑1.4.6‑cp38‑cp38‑win_amd64.whl' looks like a fil
ename, but the file does not exist
ERROR: mysqlclient‑1.4.6‑cp38‑cp38‑win_amd64.whl is not a valid wheel filename.

Oi Nádia! Fico muito feliz que se lembra de mim. Tentei o que você sugeriu, mas não deu certo. Veja o que apareceu.

(venv) C:\Users\admin\PycharmProjects\jogoteca>pip install mysqlclient‑1.4.6‑cp38
‑cp38‑win_amd64.whl
WARNING: Requirement 'mysqlclient‑1.4.6‑cp38‑cp38‑win_amd64.whl' looks like a fil
ename, but the file does not exist
ERROR: mysqlclient‑1.4.6‑cp38‑cp38‑win_amd64.whl is not a valid wheel filename.

Maico, segundo o log de erro, está dizendo que o arquivo mysqlclient‑1.4.6‑cp38 ‑cp38‑win_amd64.whl não existe nesta pasta. Você fez o download dele neste link? Caso sim, é necessário que ele esteja na mesma pasta que você está rodando o comando, nesse caso, no caminho: C:\Users\admin\PycharmProjects\jogoteca. Verifique se o arquivo está na pasta e tente executar o comando novamente.

Mas caso não dê certo, fique tranquilo. O Python3.8 é recente, então temos algumas bibliotecas que ainda não funcionam 100% nele, geralmente é necessário baixar versões específicas. E para você não ficar preso nesse erro e poder dar prosseguindo no curso, vou te apresentar uma solução alternativa, tudo bem? Vamos instalar um outra biblioteca do python para banco de dados mysql, o mysql connector. Para instalá-lo, digite:

pip install mysql-connector-python

Fiz algumas adaptações nos arquivos de banco de dados que o professor disponibiliza(prepara_banco.py e dao.py) para que você consiga criar as tabelas do banco e utilizar as funções de manipulação do mesmo. Baixe-os nesse link. É necessário alterar no arquivo prepara_banco.py para suas credenciais do MySQL, colocando sua senha e seu usuário do banco:

conexao = mysql.connector.connect(
    host="localhost",
    user="seu usuario",
    port = 3306,
    password="sua senha",
    auth_plugin='mysql_native_password'
)

E após isso, execute:

python prepara_banco.py

O resultado esperado são os dados que foram inseridos no banco. Exemplo:

 -------------  Usuários:  -------------
Danilo
Luan Marques
Nico
 -------------  Jogos:  -------------
God of War 4
NBA 2k18
Rayman Legends
Super Mario RPG
Super Mario Kart
Fire Emblem Echoes

Essas modificações que foram feitas no arquivo não impactam no aprendizado do curso, as funções são as mesmas, muda uma coisinha ou outra em relação a conexão com o banco.

Tente fazer esses procedimentos. Qualquer coisa estou por aqui, a gente vai conversando.

Fico no aguardo.

Nádia depois que tudo tinha dado errado, tentei a questão do Connector. Quando coloquei o pip install do conector deu certo. Mas ao tentar executar o prepara_banco.py deu o erro abaixo.

C:\Users\admin\PycharmProjects\jogoteca\venv\Scripts\python.exe C:/Users/admin/PycharmProjects/jogoteca/prepara_banco.py
Traceback (most recent call last):
  File "C:\Users\admin\PycharmProjects\jogoteca\venv\lib\site-packages\mysql\connector\network.py", line 606, in open_connection
    self.sock.connect(sockaddr)
ConnectionRefusedError: [WinError 10061] Nenhuma conexão pôde ser feita porque a máquina de destino as recusou ativamente

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/Users/admin/PycharmProjects/jogoteca/prepara_banco.py", line 3, in <module>
    conexao = mysql.connector.connect(
  File "C:\Users\admin\PycharmProjects\jogoteca\venv\lib\site-packages\mysql\connector\__init__.py", line 265, in connect
    return MySQLConnection(*args, **kwargs)
  File "C:\Users\admin\PycharmProjects\jogoteca\venv\lib\site-packages\mysql\connector\connection.py", line 104, in __init__
    self.connect(**kwargs)
  File "C:\Users\admin\PycharmProjects\jogoteca\venv\lib\site-packages\mysql\connector\abstracts.py", line 960, in connect
    self._open_connection()
  File "C:\Users\admin\PycharmProjects\jogoteca\venv\lib\site-packages\mysql\connector\connection.py", line 288, in _open_connection
    self._socket.open_connection()
  File "C:\Users\admin\PycharmProjects\jogoteca\venv\lib\site-packages\mysql\connector\network.py", line 608, in open_connection
    raise errors.InterfaceError(
mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on 'localhost:3306' (10061 Nenhuma conexão pôde ser feita porque a máquina de destino as recusou ativamente)

Process finished with exit code 1

O que pode ser? Eu usei os arquivos prepara_banco.py e dao.py que você sugeriu.

Maico, estamos perto!

O log de erro nos diz que está havendo um erro de conexão com o banco de dados.

Você efetuou a mudança no arquivo jogoteca.py com os seus dados de usuário e senha do banco?

E confirma por favor se seu servidor MySQL está em execução:

image

Tá difícil né? Me desculpa.

Eu não sei ver se o MySQL está em execução, ai tentei encontrar no pc e não achei.

Ai tentei instalar em: https://dev.mysql.com/downloads/connector/python/

Mas quando tento executar o arquivo instalado, aparece a mensagem: "We are unable to locate any supported Python version like Python v3.7 x64 edition. We only support Python installed using the Microsoft Windows Installer (MSI or EXE) downloaded from http://python.org/download/. Please check the Connector/Phyton manual on http://dev.mysql.com/d...

Você disse que não encontrou o MySQL no seu PC, vou te recomendar o link de uma vídeo aula aqui da alura onde o professor ensina passo a passo a instalar o MySQL. O MySQL nada mais é do que um gerenciador de banco de dados. Então vamos cadastrar os dados na nossa aplicação e esses dados ficarão salvos nesse banco.

Aula para instalação do MySQL. No minuto 7:50 é configurado as credenciais de senha do banco, o usuário padrão é o root.

Após você ter feito a instalação do MySQL em sua máquina, vá até o arquivo prepara_banco.py e altere as seguintes linhas onde está escrito "user" e "password" para a senha que você configurou no banco(no minuto 7:50). Lembrando que o usuário padrão é o root.

Após ter alterado, tente novamente executar o arquivo prepara_banco.py e me conte o retorno.

E esses erros acontecem mesmo, é normal, principalmente quando estamos aprendendo algo novo. Não desanime.

A gente vai conversando. Fico no aguardo.

Rodei uma vez o prepara_banco.py e deu certo, depois tentei de novo e agora só dá o erro abaixo:

C:\Users\admin\PycharmProjects\jogoteca\venv\Scripts\python.exe C:/Users/admin/PycharmProjects/jogoteca/prepara_banco.py
Traceback (most recent call last):
  File "C:/Users/admin/PycharmProjects/jogoteca/prepara_banco.py", line 32, in <module>
    cursor.executemany(
  File "C:\Users\admin\PycharmProjects\jogoteca\venv\lib\site-packages\mysql\connector\cursor.py", line 670, in executemany
    return self.execute(stmt)
  File "C:\Users\admin\PycharmProjects\jogoteca\venv\lib\site-packages\mysql\connector\cursor.py", line 569, in execute
    self._handle_result(self._connection.cmd_query(stmt))
  File "C:\Users\admin\PycharmProjects\jogoteca\venv\lib\site-packages\mysql\connector\connection.py", line 598, in cmd_query
    result = self._handle_result(self._send_cmd(ServerCmd.QUERY, query))
  File "C:\Users\admin\PycharmProjects\jogoteca\venv\lib\site-packages\mysql\connector\connection.py", line 486, in _handle_result
    raise errors.get_exception(packet)
mysql.connector.errors.IntegrityError: 1062 (23000): Duplicate entry 'luan' for key 'usuario.PRIMARY'

Process finished with exit code 1

Reparei que no jogoteca.py está aparecendo um erro na linha:

from flask_mysqldb import MySQL

Será que isso pode estar influenciando?

solução!

Maico, deu certo!

Quando você executou novamente e apareceu o erro:

mysql.connector.errors.IntegrityError: 1062 (23000): Duplicate entry 'luan' for key 'usuario.PRIMARY'

Está nos dizendo que os dados não podem ser adicionados novamente ao banco, pois os mesmos já existem. Esse arquivo prepara_banco.py é executado apenas uma vez, ele serve para criar o nosso banco de dados. Uma vez com o banco criado, podemos dar prosseguimento no curso. E o interessante de utilizar um banco de dados é que todos os jogos que adicionarmos na nossa página não serão perdidos quando fecharmos o navegador, pois estarão guardados no banco.

Quanto ao erro que aparece na linha no arquivo jogoteca.py:

from flask_mysqldb import MySQL

É porque não estamos utilizando essa biblioteca mais, e sim o mysql-connector-python que instalamos via pip, lembra?

Realize os seguinte passos no arquivo jogoteca.py para que possamos utilizar o mysql-connector-python:

  • Altere a linha: from flask_mysqldb import MySQL para import mysql.connector

  • Altere o trecho:

app.config['MYSQL_HOST'] = "localhost"
app.config['MYSQL_USER'] = "root"
app.config['MYSQL_PASSWORD'] = "admin"
app.config['MYSQL_DB'] = "jogoteca"
app.config['MYSQL_PORT'] = 3306

Para:

db = mysql.connector.connect(
    host="localhost",
    user="seu usuario",
    port = 3306,
    password="sua senha",
    database = "jogoteca",
    auth_plugin='mysql_native_password'
)
  • Exclua a linha: db = MySQL(app)

Após isso, tente executar o arquivo jogoteca.py. Aparecerá algo como:

Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

Abra no navegador o link que aparecer para você, no meu caso foi: http://127.0.0.1:5000/ e veja se deu certo =)

A saída esperada é uma página com os nossos jogos:

image

Com isso pronto, poderá dar prosseguimento no curso.

Nádia você foi incrível, muito obrigado.

Deu certinho agora!!!

Maico, fico feliz que tenha conseguido fazer todo o procedimento. E qualquer dúvida que houver ao longo do curso ou se tiver ficado alguma ao longo desse procedimento é só falar, estou a disposição.

Abraços!