[RUBY] [Rails] Comment supprimer les données MySQL de l'environnement de production après les avoir placées dans l'environnement de développement

introduction

Lorsque j'ai mis des données MySQL dans l'environnement de développement de l'environnement de production, j'ai pu les saisir sans erreur particulière, mais lorsque je les ai effacées, une erreur s'est produite et j'en ai été accro. C'est peut-être un cas un peu inhabituel, mais j'ai décidé de le résumer comme une référence pour d'autres personnes.

Liens connexes

Veuillez vous référer à ce qui suit pour un article sur la façon de placer les données MySQL dans l'environnement de production dans l'environnement de développement en premier lieu.

Erreur

Lorsque j'ai exécuté la commande pour supprimer la base de données elle-même dans l'environnement de développement, ...

$ rails db:drop

J'ai eu l'erreur ActiveRecord :: ProtectedEnvironmentError. .. ..

La signification de cette erreur est

J'essaie d'exploiter une base de données dans un environnement de production, est-ce que ça va?

C'est comme un avertissement, vous pouvez continuer l'opération en entrant la variable d'environnement. Je dis.

C'est un environnement de développement en premier lieu, mais pourquoi est-il un environnement de production? ??

rails aborted!
ActiveRecord::ProtectedEnvironmentError: You are attempting to run a destructive action against your 'production' database.
If you are sure you want to continue, run the same command with the environment variable:
DISABLE_DATABASE_ENVIRONMENT_CHECK=1
bin/rails:4:in `<main>'
Tasks: TOP => db:migrate:reset => db:drop => db:check_protected_environments
(See full trace by running task with --trace)

Conclusion

J'écrirai d'abord à partir de la conclusion,

Rails5 stocke les variables d'environnement dans MySQL, et en plaçant les données de l'environnement de production dans l'environnement de développement tel quel, les variables de l'environnement de production sont stockées dans les variables d'environnement de MySQL, de sorte que l'erreur ci-dessus s'est produite. C'était.

La solution est donc de réécrire les variables d'environnement MySQL de celles de l'environnement de production vers celles de l'environnement de développement.

Procédure de solution

Connectez-vous à MySQL.

$ mysql -h db -u root -p

Vérifiez la base de données existante.

$ show databases;

Spécifiez la base de données cible.

$ use *******;

Affiche une liste des tables de la base de données.

$ show tables;

Je pense qu'il y a «« ar_internal_metadata »dans la liste des tableaux. Les variables d'environnement y sont stockées.

+---------------------------------------------------+
| Tables_in_scm_development                         |
+---------------------------------------------------+
| ar_internal_metadata                              |
| ...                                               |
+---------------------------------------------------+

En regardant le contenu de ar_internal_metadata,

$ select * from ar_internal_metadata;

J'ai trouvé les lettres `` production ''.

+-------------+-------------+---------------------+---------------------+
| key         | value       | created_at          | updated_at          |
+-------------+-------------+---------------------+---------------------+
| environment | production  | 2020-01-10 09:37:29 | 2020-01-10 09:37:29 |
+-------------+-------------+---------------------+---------------------+

Modifiez cette `` production '' en développement ''.

$ update ar_internal_metadata set value='development'

En regardant à nouveau le contenu de ar_internal_metadata,

$ select * from ar_internal_metadata;

La variable d'environnement peut être changée en `` développement ''

+-------------+-------------+---------------------+---------------------+
| key         | value       | created_at          | updated_at          |
+-------------+-------------+---------------------+---------------------+
| environment | development | 2020-01-10 09:37:29 | 2020-01-10 09:37:29 |
+-------------+-------------+---------------------+---------------------+

Sortez de MySQL

$ exit

Exécutez à nouveau la commande pour supprimer le DB. Puis j'ai réussi!

$ rails db:drop

Résumé

Cela peut être difficile pour certaines personnes à comprendre parce que j'ai rédigé la procédure à la hâte, mais j'espère qu'elle sera utile pour quelqu'un dans le besoin.

référence

Recommended Posts

[Rails] Comment supprimer les données MySQL de l'environnement de production après les avoir placées dans l'environnement de développement
Comment installer Docker dans l'environnement local d'une application Rails existante [Rails 6 / MySQL 8]
[Explication approximative] Comment séparer le fonctionnement de l'environnement de production et de l'environnement de développement avec Rails
[Rails] Comment exécuter "rails db: create" etc. dans l'environnement de production EC2
Comment installer Pry après avoir créé un environnement de développement Rails avec Docker
Comment supprimer de grandes quantités de données dans Rails et problèmes
Comment utiliser MySQL dans le didacticiel Rails
[Rails] Réinitialisez la base de données dans l'environnement de production
Rails6.0 ~ Comment créer un environnement de développement respectueux de l'environnement
[Rails] Comment utiliser PostgreSQL dans l'environnement Vagrant
Comment vérifier les commandes Rails dans le terminal
Présentez Docker à l'environnement de développement et à l'environnement de test des applications Rails et MySQL existantes
Comment créer une combinaison unique de données dans la table intermédiaire des rails
Comment régler l'heure d'affichage sur l'heure japonaise dans les rails
J'obtiens Mysql2 :: Error :: ConnectionError dans l'environnement de production
[Rails] Comment afficher les images dans la vue
Pour ceux qui souhaitent utiliser MySQL pour la base de données dans la construction de l'environnement de Rails6 ~.
Comment vérifier l'application WEB créée dans l'environnement de développement PC sur votre smartphone
[Rails] Comment afficher les informations stockées dans la base de données dans la vue
[Rails] Que faire si vous effectuez accidentellement une installation groupée dans un environnement de production de votre environnement local
[Rails / Routing] Comment faire référence au contrôleur dans votre propre répertoire
[Docker] Comment sauvegarder et restaurer les données de base de données de l'application Rails sur docker-compose [MySQL]
[Débutant en programmation] Que faire lorsque les rails deviennent une erreur dans l'environnement de développement local
[Rails] Différentes façons de supprimer des données
[Rails / Heroku / MySQL] Comment réinitialiser la base de données de l'application Rails sur Heroku
Comment installer le langage utilisé dans Ubuntu et comment créer l'environnement
Après avoir appris Progate, j'ai essayé de créer une application SNS en utilisant Rails dans l'environnement local
Comment installer jQuery dans Rails 6
Comment créer un environnement Rails + Vue + MySQL avec Docker [dernière version 2020/09]
Comment ajouter la fonction de suppression
Comment installer Swiper in Rails
Comment exécuter avec des commandes de langage de développement normales dans l'environnement de développement Docker
[Rails] À propos de l'erreur selon laquelle l'image n'est pas affichée dans l'environnement de production
Comment modifier le nombre maximum et maximum de données POST dans Spark
Comment créer un environnement de développement Ruby on Rails avec Docker (Rails 6.x)
[Rails] Comment obtenir les informations sur l'utilisateur actuellement connecté avec devise
Comment résoudre la construction de l'environnement local de Ruby on Rails (MAC)!
Comment déboguer le traitement dans le modèle Ruby on Rails avec juste la console
Comment créer un environnement de développement Ruby on Rails avec Docker (Rails 5.x)
Développement Android, comment vérifier null dans la valeur de l'objet JSON
[Rails] Comment appliquer le CSS utilisé dans l'application principale avec Administrer
[Rails] Comment résoudre le décalage temporel de created_at après la méthode de sauvegarde
Comment implémenter la fonctionnalité de recherche dans Rails
Comment changer le nom de l'application dans les rails
Comment insérer une vidéo dans Rails
[Rails] Comment utiliser la méthode de la carte
[Docker] Construction de l'environnement de développement Rails6 / Ruby2.7 / MySQL8