Je voulais ajouter une fonction basée sur une base de données au linebot sur lequel je travaille actuellement, alors j'ai essayé de me connecter à MySQL en utilisant Heroku, mais il y avait beaucoup de pierre d'achoppement. En conséquence, j'ai abandonné, mais j'espère que cela sera utile pour les débutants comme moi, donc je vais le résumer au cas où.
Installez MySQL lui-même avec pip install mysql
.
Installez le connecteur.
Pour être honnête, je ne comprends pas vraiment le rôle, mais comme son nom l'indique, il semble nécessaire de se connecter au serveur MySQL.
Il existe de nombreux types de connecteurs selon le but et le langage utilisés, mais j'utilise mysqlclient
.
Ceci est également installé avec pip install mysqlclient
.
Dans mon cas, après avoir terminé toutes les préparations pour MySQL décrites plus tard, j'ai poussé le code à Heroku pour vérifier l'opération, mais j'ai eu une erreur d'importation MySQL. Il y avait deux causes, mais la première était la description des «exigences» dans le fichier poussé. Une erreur s'est produite car je n'ai pas répertorié le connecteur MySQL ici (au fait, je n'étais pas sûr au début et j'ai répertorié la version de MySQL elle-même, mais lorsque je l'ai poussée, une erreur s'est produite. Masu).
Deuxièmement, lorsque vous utilisez MySQL avec Heroku, il semble que ClearDB est utilisé et qu'un compte créé à partir de celui-ci est requis.
Je vais omettre la méthode d'enregistrement détaillée, mais en guise de mise en garde, la plupart des articles sur ClearDB disent qu'après l'enregistrement, copiez la variable d'environnement CLEARDB_DATABASE_URL
, changez le début en mysql2 et définissez-le sur DATABASE_URL
. , Cette opération ne semble nécessaire que pour Ruby.
Par conséquent, cette fois, j'ai décidé de me connecter à MySQL en utilisant le compte de CLEARDB_DATABASE_URL
lorsque ClearDB a été ajouté avec heroku addons: create cleardb: ignite
.
Puisqu'il est décrit dans CLEARDB_DATABASE_URL
sous la forme de mysql: // [username]: [password] @ [hostname] / [db_name]? Reconnect = true
,mysql --host = [hostname] sur le terminal. Vous pouvez vous connecter en tapant --user = [nom d'utilisateur] --password = [mot de passe] [nom_base]
.
Si je peux entrer MySQL en toute sécurité, je créerai les tables nécessaires, etc., mais un problème se produit ici. J'ai tapé une requête sur le moniteur pour créer une table normalement, mais j'ai eu l'erreur «ERREUR 2013». Immédiatement après cela, lorsque j'ai entré à nouveau la même requête, j'ai eu une autre erreur, mais l'exécution elle-même était terminée. À partir de là, j'ai pensé que je devais probablement modifier les paramètres du système de temporisation, mais je n'ai pas accepté la commande pour le modifier. Après de nombreuses recherches, je suis arrivé à la conclusion que la cause première était que je devais migrer pour modifier les paramètres de la base de données. Cependant, bien que j'aie étudié comment migrer Flask, je ne pouvais pas du tout le comprendre. À l'origine, je n'étais pas particulier à propos de MySQL lui-même, alors j'ai abandonné et j'ai décidé d'utiliser postgresql, qui est la base de données standard de Heroku.
~~ Quand je l'ai recherché dans le message d'erreur, il semblait qu'il pouvait être résolu en augmentant la valeur telle que connect_timeout
, mais ce n'est pas une solution fondamentale et elle peut être traitée sans problème si l'utilisateur root entre, donc ClearDB J'ai pensé qu'il pourrait y avoir un problème particulier.
Donc, si vous regardez de plus près le site ClearDB, ~~
~~ Il est recommandé d'utiliser MySQL Workbench, Sequel Pro pour Mac OS X, Navicat, etc. lors de l'édition de la base de données. ~~
J'ai trouvé une description disant ~~. Cela semble être des outils d'interface graphique qui vous permettent d'utiliser MySQL sans entrer directement de requête, et j'ai déjà vu quelqu'un utiliser MySQL Workbench dans un article, alors j'ai décidé d'essayer ceci. J'ai pu créer avec succès la table nécessaire dans Référez-vous à cet article pour les méthodes de fonctionnement détaillées. ~~
En passant, lorsque j'ai essayé pour la première fois d'entrer dans MySQL en tant qu'utilisateur root après avoir pratiqué MySQL, je ne pouvais pas trouver le mot de passe, peu importe combien je cherchais. Je savais que le mot de passe initial était répertorié dans le fichier donné lorsque j'ai installé MySQL, mais je n'ai pas pu trouver ce fichier, quel que soit le nombre d'étapes que j'ai suivies. En conséquence, j'ai réussi à entrer dans MySQL à Reportez-vous à cet article.
Je l'ai écrit pendant longtemps, mais en résumé
Ce sera.
Cette fois, j'ai essayé un nouveau champ appelé base de données, et ce fut une excellente expérience d'apprentissage car j'avais besoin d'une perspective différente de l'écriture du code que j'avais fait jusqu'à présent. La base bêta semble indispensable pour presque tous les services, je voudrais donc profiter de cette opportunité pour acquérir de solides connaissances et élargir mes compétences.