2017-08-21 4 views
1

J'essaye d'installer activeadmin sur les rails avec concevoir. Je ajouté Gemfile et couruerreur en double dans la migration sur les rails avec activeadmin et concevoir

rake db:migrate 

et moi avons rencontré ces erreurs.

== 20170821153121 DeviseCreateAdminUsers: migrating =========================== 
-- create_table(:admin_users) 
rails aborted! 
StandardError: An error has occurred, this and all later migrations canceled: 

SQLite3::SQLException: table "admin_users" already exists: CREATE TABLE "admin_users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar DEFAULT '' NOT NULL, "encrypted_password" varchar DEFAULT '' NOT NULL, "reset_password_token" varchar, "reset_password_sent_at" datetime, "remember_created_at" datetime, "sign_in_count" integer DEFAULT 0 NOT NULL, "current_sign_in_at" datetime, "last_sign_in_at" datetime, "current_sign_in_ip" varchar, "last_sign_in_ip" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL) 
/Users/admin/.rvm/gems/ruby-2.4.1/gems/sqlite3-1.3.13/lib/sqlite3/database.rb:91:in `initialize' 
/Users/admin/.rvm/gems/ruby-2.4.1/gems/sqlite3-1.3.13/lib/sqlite3/database.rb:91:in `new' 
/Users/admin/.rvm/gems/ruby-2.4.1/gems/sqlite3-1.3.13/lib/sqlite3/database.rb:91:in `prepare' 
/Users/admin/.rvm/gems/ruby-2.4.1/gems/sqlite3-1.3.13/lib/sqlite3/database.rb:137:in `execute' 
... 

Répondre

0

Eh bien l'erreur est assez explicite, la base de données a déjà une table avec le même nom Devise/administrateur actif veut utiliser et les noms de tables doivent être uniques.

Avez-vous déjà déjà utilisé/essayé le joyau activeadmin? Si vous avez déjà créé les tables, essayer de créer et d'exécuter de nouvelles migrations échouera, mais vous devriez pouvoir les utiliser, ou les supprimer et en créer de nouvelles.

Ou votre application a-t-elle un modèle AdminUser pour son propre usage? Si c'est le cas, l'un d'entre eux doit changer.

Vous devriez être en mesure de voir les deux cas dans votre db/schema.rb, ou dans les anciennes migrations dans db/migrations/. Si vous avez essayé de supprimer/annuler une migration en supprimant simplement sa migration sans script sans revenir en arrière (rails db:rollback ou une sauvegarde de base de données), vous pouvez également avoir des anciennes tables dans la base de données, que vous pouvez supprimer manuellement.

Si vous devez renommer les tables Active Admin, le conseil donné dans Github Database tables name prefix #4960 consiste à éditer manuellement la migration et à utiliser self.table_name= dans les modèles pour leur indiquer les nouveaux noms.

0

Eh bien, l'erreur elle-même répète que vous avez déjà la même table appelée "admin_users".

S'il vous plaît exécutez la commande sur la console rails pour voir vos tables déjà créés comme cette façon:

ActiveRecord :: Base.connection.tables

Si vous trouveriez même table dans la liste alors vous devez supprimer cette table manuellement ou d'une autre manière, il vous suffit de déposer votre db et de la recréer après que vous puissiez exécuter votre nouvelle migration.