[PYTHON] J'obtiens [Erreur 2055] en essayant de me connecter à MySQL avec Heroku

Aperçu

J'ai essayé de pousser et d'exécuter un programme python pour me connecter à MySQL en utilisant ClearDB de Heroku, mais je n'ai pas pu me connecter avec le message ʻerror 2055 Lost connection ~ `.

En conséquence, ce n'était pas une erreur liée à MySQL, mais à la façon dont le programme a été écrit, mais je voudrais le résumer pour ceux qui souffrent du même problème.

environnement

Ce qu'il ne faut pas écrire dans cet article

--Comment définir ClearDB

Cause

Au début, après avoir ajouté ClearDB, je pensais que certains paramètres étaient nécessaires, j'ai donc étudié diverses choses et essayé la migration, etc. Cependant, j'ai pu me connecter à ClearDB lui-même, et même si j'exécutais le programme qui fonctionne en se connectant uniquement à la base de données, aucune erreur ne s'est produite et je ne pouvais pas comprendre la cause.

À ce moment-là, j'ai trouvé cet article et l'ai lu d'une manière ou d'une autre, mais comme une cause d'échec de l'opération SQL ** Lors de l'exécution d'une requête après la déconnexion ** Était écrit. Je l'ai pris pour acquis et j'ai essayé de continuer, mais j'ai soudainement regardé mon code et j'ai découvert que c'était la cause.

Parce que mon code a été fait comme ceci:

main.py


#Importation de module

#Programme d'importation pour les opérations de base de données
import database

#Traitement principal
    #Appel de fonction dans la base de données
    database.get_data()

database.py


import mysql.connector

#Définissez la destination de la connexion et connectez-vous

def get_data():
    #Exécuter l'ordre

connection.commit()
connection.close()

Sur cette base, si vous jetez un œil à cet article, le code écrit en dehors de la fonction sera exécuté lors de l'importation de database. ..

En d'autres termes, la ʻimport database de main.pyse connectera à SQL une fois, mais la fonctionget_data ()dedatabase.py n'est pas exécutée car elle est seulement définie, et la dernière connexion Le flux est que la connexion est fermée avec .close () `.

Après cela, lorsque j'ai appelé la fonction avec database.get_data () dans main.py, la connexion était déjà déconnectée, donc bien sûr la requête n'a pas pu être exécutée et une erreur s'est produite.

Même si vous exécutez uniquement database.py, il est compréhensible qu'aucune erreur ne se produise car il déconnecte simplement la connexion sans rien faire après la connexion.

Contre-mesures

J'ai donc modifié le code comme ci-dessous et essayé de me déconnecter en appelant la fonction, et j'ai pu me connecter sans aucune erreur.

main.py


#Importation de module

#Programme d'importation pour les opérations de base de données
import database

#Traitement principal
    #Appel de fonction dans la base de données
    database.get_data()

    #ajouter à
    database.close_db()

database.py


import mysql.connector

#Définissez la destination de la connexion et connectez-vous

def get_data():
    #Exécuter l'ordre

#Réparer
def close_db()
    connection.commit()
    connection.close()

référence

Recommended Posts

J'obtiens [Erreur 2055] en essayant de me connecter à MySQL avec Heroku
J'obtiens une erreur en essayant d'installer maec 4.0.1.0 avec pip
J'obtiens un UnicodeDecodeError en essayant de me connecter à oracle avec python sqlalchemy
J'obtiens une erreur en essayant meinheld + WebSocket + mongodb
Lorsque j'essaye d'importer des pandas sur macOS, j'obtiens l'erreur No module named'_bz2 '
J'obtiens une erreur lorsque j'essaie d'élever Python à la série 3 en utilisant pyenv dans Catalina
Lorsque j'essaye de me connecter à MySQL avec mysql-connector-python, je ne peux pas me connecter avec l'erreur "Erreur de connexion SSL: SSL_CTX_set_tmp_dh a échoué"
Quand j'obtiens une erreur avec Pylint sur Windows Atom
Connectez-vous à mysql
À propos de l'erreur que j'ai rencontrée en essayant d'utiliser Adafruit_DHT à partir de Python sur Raspberry Pi
J'ai eu une erreur en essayant d'installer Xgboost et sa solution
L'histoire de l'abandon d'essayer de se connecter à MySQL en utilisant Heroku
Que faire si vous obtenez une erreur lors du chargement de mnist
Quand j'obtiens une erreur de pilote chrome dans Selenium
Que faire si vous obtenez une erreur d'autorisation refusée (clé publique) lorsque vous essayez de tirer sur le hub Git
Erreur lors de la tentative d'installation de psycopg2 en Python
Connectez-vous à MySQL avec Python sur Raspberry Pi
Connectez-vous lorsque je craignais de ne pas pouvoir me connecter au Wi-Fi sous Linux
J'ai eu une erreur en essayant d'exécuter Hello World en langue Go
Connectez python à mysql
J'obtiens une erreur lorsque je mets opencv dans pyautoGUI
Je reçois "trop tôt pour créer une image" sur tkinter
J'obtiens une erreur lors de l'installation de scipy sur t2.micro car je n'ai pas assez de mémoire
Quand j'essaye d'installer mysqlclient avec Django, j'obtiens l'erreur: la commande 'gcc' a échoué avec l'état de sortie 1.
Que faire si vous obtenez l'erreur ʻERR_FEATURE_UNAVAILABLE_ON_PLATFORM` lors de l'utilisation de ts-node-dev sous Linux
Quand j'essaye de pousser avec heroku, ça ne marche pas
[Solution] Lorsque j'essaye de me connecter à CloudSQL avec GAE, j'obtiens une ImportError uniquement lorsque dev_appserver.
Que faire si vous obtenez une erreur non définie lorsque vous essayez d'utiliser pip avec pyenv
J'ai eu une erreur lorsque j'ai essayé de traiter luigi en parallèle dans Windows, mais la solution
Que faire si vous obtenez une erreur de remplacement obligatoire `get_config` lorsque vous essayez de model.save avec Keras
Prise en charge de Freetype2 non disponible sur PIL lors de la tentative de blocage du diagnostic sur CentOS6.5
Point de contrôle lorsque le robot de retour LINE Parrot est accro à Heroku
Un mémorandum lors de l'acquisition automatique avec du sélénium
Une note à laquelle j'étais accro lors de l'émission d'un bip sous Linux
Je ne sais pas comment obtenir les paramètres de requête dans GAE / P
J'ai essayé de démarrer avec Bitcoin Systre le week-end
Articles pour voir s'ils sont rejetés lorsque Git Push Heroku Master avec Heroku
Que faire lorsque vous obtenez "Je ne peux pas voir le site !!!!"
Étapes pour installer MySQL 8.0 sur CentOS 8.1
J'obtiens une ImportError dans appengine_config.py
Comment exécuter matplotlib sur heroku
UnicodeEncodeError lors de la tentative d'exécution du radon
Malentendu sur la façon de connecter CNN
Connectez-vous à MySQL à l'aide de Flask SQL Alchemy
Lorsque j'importe TensorFlow vers Python, j'obtiens "Erreur d'importation: échec du chargement de la DLL: le module spécifié est introuvable."
Je veux me mettre en colère contre ma mère quand la mémoire est serrée
Une histoire à laquelle j'étais accro à essayer d'installer LightFM sur Amazon Linux
Une histoire à laquelle j'étais accro à essayer d'obtenir une URL de vidéo avec tweepy
Lorsque j'essaie de mettre à niveau pip, après avoir échoué, on me demande de mettre à niveau et de boucler indéfiniment
Points sur lesquels je suis souvent accro à l'écriture en tant que débutant MySQL
Un mémorandum parce que j'ai trébuché en essayant d'utiliser MeCab avec Python
Obtenez des taux de change réguliers avec Heroku et téléchargez des journaux sur Amazon S3
Que faire si vous obtenez une erreur en essayant d'envoyer un message dans tasks.loop () immédiatement après le démarrage
J'obtiens une erreur ~ est zéro, U singulier lors du passage d'une matrice distribuée co-distribuée de la couche linéaire à MultivariateNormal
J'obtiens une erreur avec les pandas d'importation.
Connectez-vous au conteneur MySQL de Docker depuis Flask
Résolution des erreurs lors de l'installation de numba sur macOS
Ce à quoi j'ai fait référence en étudiant tkinter