Une procédure typique pour ajouter des colonnes et modifier les noms de colonnes et les types de données est
1, vérifiez l'état actuel avec
rails db: migrate: status 2 ⃣ Entrez une commande pour créer ou ajouter un fichier de migration dans le terminal (la commande diffère en fonction de l'opération que vous souhaitez effectuer) 3 ⃣ Décrivez les changements dans le fichier de migration (en cas d'ajout, vérifiez uniquement le contenu) 4⃣
rails db:migrate```
Je pense (je suis désolé si c'est différent). Bien sûr, je pense que c'est aussi la bonne réponse. (J'utilise aussi les rails db: rollback) Je pense que la table peut disparaître mystérieusement à chaque fois que je vérifie la commande ou que je fais une faute de frappe ...
1 ⃣
rails db: migrate: status``` pour vérifier l'état actuel (s'il n'y a pas de problème, passez à 2 ⃣)
2, réécrivez directement la partie du fichier de migration que vous avez déjà créée et que vous souhaitez modifier (veuillez l'ajouter si vous souhaitez l'ajouter)
3, exécutez `` rails db: migrate: reset '' pour terminer
Consultez schema.rb!
rails db:migrate:En réinitialisant le fichier de migration existant**Utiliser tous**Et recréez la table. Par conséquent, toutes les parties réécrites et les parties ajoutées seront reflétées.(Même si une erreur se produit en raison d'une faute de frappe, elle sera principalement corrigée.)
Cependant, si vous ne souhaitez pas supprimer l'enregistrement, vous devez l'utiliser correctement selon le cas, alors tapez la commande avec soin.
## Exemple
#### 1, vérification de l'état
#### **`rails db:migrate:exécution du statut`**
Il y a autant de fichiers de migration que la quantité sortie lorsque la commande est exécutée, et l'image sera comme les recréer tous en même temps dans le processus suivant.
Terminal
vocstartsoft:~/environment/bookers2-task (master) $ rails db:migrate:status #Courez ici
database: /home/ec2-user/environment/bookers2-task/db/development.sqlite3
Status Migration ID Migration Name
--------------------------------------------------
up 20200830060820 Devise create users #L'État sortira, qu'il soit à la hausse ou à la baisse.
up 20200830062142 Create books #up est essentiellement migré
up 20201101080413 Create book comments
#Omis ci-dessous
Apportez le fichier de migration contenant le contenu que vous souhaitez ajouter / modifier dans le dossier ** db / migrate **. Cette fois, la ** colonne de titre ** et la ** colonne de corps ** utilisées pour la publication ont des types de données incorrects, je vais donc corriger cela (quel type d'erreur est booléen?)
db/migrate/20201115102020_create_books.rb
class CreateBooks < ActiveRecord::Migration[5.2]
def change
create_table :books do |t|
t.integer :title #← Je veux définir un entier sur une chaîne
t.boolean :body #← Je veux changer le booléen en texte
t.integer :user_id
t.timestamps
end
end
end
Réécrire (veuillez ajouter si vous souhaitez ajouter)
db/migrate/20201115102020_create_books.rb
#↑ Omis
t.string :title #integer→string
t.text :body #boolean→text
#↓ omis
Terminal
$ rails db:migrate:reset
Si le terminal sort le même contenu que les rails habituels db: migrate, il n'y a probablement pas de problème. Vérifions schema.rb et voyons s'il a été modifié / ajouté correctement. Cela semble fastidieux, mais sachez que les informations utilisateur (nom, etc.) et le contenu publié que vous avez créé auraient dû disparaître.
Les deux commandes sont des commandes qui suppriment la base de données et la recréent, mais il semble y avoir une grande différence.
rails db:reset supprime le DB et le schéma actuel.Chargez rb et recréez le DB. db/migrate/~.rb ne semble pas être utilisé.
#### **`rails db:migrate:reset est une migration normale (db) après la suppression de la base de données:migrate) est effectuée. Autrement dit, db/migrate/~.Tous les rbs sont exécutés du plus ancien au plus récent.`**
Enfin, autres que les méthodes ci-dessus [Cliquez ici pour les articles d'ajout de colonnes] (https://qiita.com/jackie0922youhei/items/09a7b081e40506f07358) Cela a été utile, et au contraire, [Cliquez ici pour un article sur le contenu lorsque les rails db: migrate: reset ne peuvent pas être effectués] (https://qiita.com/mom0tomo/items/a252ff8a42eea00f81b1) Cela fait longtemps, mais je pense personnellement qu'il y a beaucoup d'erreurs compliquées autour de la DB, donc je suis content que cet article le résout! (Je suis désolé si ça ne s'améliore pas ...)
Recommended Posts