ruby on rails - precompiling - heroku run rake db: migrate error
ruby heroku (2)
Parece que lo siguiente es cierto:
-
20120525005302_create_users.rb
intentará crear una tabla deusers
en su base de datos. -
20120611000411_devise_create_users.rb
también intentará crear una tabla deusers
en la base de datos. - Su base de datos ya tiene una tabla de
users
en ella, por lo que la migración falla en la segunda migración.
Para que la tabla de users
de su base de datos se corresponda correctamente con la migración 20120611000411_devise_create_users.rb
, puede hacer una de estas dos cosas:
- Deshaga (o suelte) la base de datos y luego vuelva a ejecutar las migraciones. (Puede eliminar
20120525005302_create_users.rb
si está vacío). - Modifique su migración
20120611000411_devise_create_users.rb
para eliminar cualquier tabla deusers
existente antes de hacer cualquier otra cosa. - Modifique su migración
20120611000411_devise_create_users.rb
siguiente manera:- En lugar de crear una tabla de
users
, modifique la tabla existente. - Agregar y modificar componentes de la base de datos para corresponder
- En lugar de crear una tabla de
Generalmente, si su aplicación se encuentra en un "estado infantil", la recreación de la base de datos tiende a ser una manera rápida de construir la estructura inicial de una aplicación. Sin embargo, si ya tiene datos importantes en su tabla de users
, querrá conservarlos y proceder modificando la migración 20120611000411_devise_create_users.rb
para cambiar la base de datos de forma no destructiva.
Referencias
Quiero ejecutar la migración en mi aplicación que tengo en heroku pero obtengo este error:
Running `rake db:migrate` attached to terminal... up, run.1
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/1/4/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /app/Rakefile:7)
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/1/4/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /app/Rakefile:7)
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/1/4/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /app/Rakefile:7)
Migrating to CreateUsers (20120525005302)
Migrating to DeviseCreateUsers (20120611000411)
== DeviseCreateUsers: migrating ==============================================
-- create_table(:users)
rake aborted!
An error has occurred, this and all later migrations canceled:
PGError: ERROR: relation "users" already exists
: CREATE TABLE "users" ("id" serial primary key, "email" character varying(255) DEFAULT '''' NOT NULL, "encrypted_password" character varying(255) DEFAULT '''' NOT NULL, "reset_password_token" character varying(255), "reset_password_sent_at" timestamp, "remember_created_at" timestamp, "sign_in_count" integer DEFAULT 0, "current_sign_in_at" timestamp, "last_sign_in_at" timestamp, "current_sign_in_ip" character varying(255), "last_sign_in_ip" character varying(255), "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL)
Tasks: TOP => db:migrate
Tengo los siguientes archivos de migración en mi repositorio github
- 20120525005302_create_users.rb (que está vacío, no sé cómo eliminarlo)
- 20120611000411_devise_create_users.rb
- 20120613140535_create_authentications.rb
Parece que ya tienes usuarios de tabla (probablemente de la migración de create_users) que device_create_users está intentando recrear
Puede modificar su migración de create_device_users para agregar solo los campos que necesita
Alternativamente, si se trata de una nueva aplicación sin usuarios, simplemente puede soltar e intentar volver a ejecutar todas las migraciones.