ruby-on-rails – Rails教程:SQLite3 :: ConstraintException:
发布时间:2020-12-16 19:27:13 所属栏目:百科 来源:网络整理
导读:我正在关注rails教程.我在上. 6,我在SQLite3上遇到一个奇怪的错误(为了记录,我使用的是sqlite 1.3.10版本,教程使用的是1.3.9) 运行rake db:migrate时我没有收到错误,但是当我为测试环境运行迁移时,我得到的是: $bundle exec rake test:modelsrake aborted!
我正在关注rails教程.我在上. 6,我在SQLite3上遇到一个奇怪的错误(为了记录,我使用的是sqlite 1.3.10版本,教程使用的是1.3.9)
运行rake db:migrate时我没有收到错误,但是当我为测试环境运行迁移时,我得到的是: $bundle exec rake test:models rake aborted! ActiveRecord::PendingMigrationError: Migrations are pending. To resolve this issue,run: bin/rake db:migrate RAILS_ENV=test sample_app/test/test_helper.rb:3:in `<top (required)>' sample_app/test/models/user_test.rb:1:in `require' sample_app/test/models/user_test.rb:1:in `<top (required)>' Tasks: TOP => test:models (See full trace by running task with --trace) $bundle exec rake db:migrate RAILS_ENV=test == 20150628011937 AddIndexToUsersEmail: migrating =========================== == -- add_index(:users,:email,{:unique=>true}) rake aborted! StandardError: An error has occurred,this and all later migrations canceled: SQLite3::ConstraintException: UNIQUE constraint failed: users.email: CREATE UNIQUE INDEX "index_users_on_email" ON "users" ("email")sample_app/db/migrate/20150628011937_add_index_to_users_email.rb:3:in `change' C:in `migrate' ActiveRecord::RecordNotUnique: SQLite3::ConstraintException: UNIQUE constrain t failed: users.email: CREATE UNIQUE INDEX "index_users_on_email" ON "users" ("email") sample_app/db/migrate/20150628011937_add_index_to_users_email.rb:3:in `change' C:in `migrate' SQLite3::ConstraintException: UNIQUE constraint failed: users.email sample_app/db/migrate/20150628011937_add_index_to_users_email.rb:3:in `change' C:in `migrate' Tasks: TOP => db:migrate (See full trace by running task with --trace) 这是我的user.rb模型: class User < ActiveRecord::Base before_save { self.email = email.downcase } validates :name,presence: true,length: { maximum: 50 } VALID_EMAIL_REGEX = /A[w+-.]+@[a-zd-.]+.[a-z]+z/i validates :email,length: { maximum: 255 },format: { with: VALID_EMAIL_REGEX },uniqueness: { case_sensitive: false } end 这是我最近的迁移 class AddIndexToUsersEmail < ActiveRecord::Migration def change add_index :users,unique: true end end 如果相关,我可以发布任何其他文件.在此先感谢您的帮助! 解决方法
问题是我在迁移之前在数据库中使用相同的电子邮件.
db:reset解决了一切 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |