迁移错误:SQLite3::SQLException:没有这样的 table:main.users
Error on migration: SQLite3::SQLException: no such table: main.users
我对 Rails 世界还是很陌生。我一直在研究一项技能,所以我想我应该尝试一下 Omni-Auth 推特。我一直在 SitePoint 上阅读本教程:
Rails Authentication with OAuth 2.0 and OmniAuth
直到 运行ning rake db:migrate
让我创建用户模型并修改迁移文件时,我才发现。这是我根据这些说明创建的迁移文件:
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :provider, null: false
t.string :uid, null: false
t.string :name
t.string :location
t.string :image_url
t.string :url
add_index :users, :providers
add_index :users, :uid
add_index :users, [:provider, :uid], unique: true
t.timestamps null: false
end
end
end
但是当我 运行 rake db:migrate
它抛出这个错误:
SQLite3::SQLException: no such table: main.users: CREATE INDEX "index_users_on_providers" ON "users" ("providers")/Users/jrshafer/.rvm/gems/ruby-2.2.1/gems/sqlite3-1.3.11/lib/sqlite3/database.rb:91:in `initialize'
如果您能为这位有抱负的开发人员提供任何帮助,我们将不胜感激。
您可以在此处查看完整的存储库:
kronoTweeter GitHub Repo
您应该在一个块中创建 table,然后添加索引。但是在您当前的代码中,您正试图在同一个 create_table
块中添加索引。
尝试用这段代码替换您当前的代码:
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :provider, null: false
t.string :uid, null: false
t.string :name
t.string :location
t.string :image_url
t.string :url
t.timestamps null: false
end # you have to end the create_table block here
# then you have to have the add_index statements
add_index :users, :providers
add_index :users, :uid
add_index :users, [:provider, :uid], unique: true
end
end
然后运行:
bundle exec rake db:migrate
这应该可以解决您的问题。
我对 Rails 世界还是很陌生。我一直在研究一项技能,所以我想我应该尝试一下 Omni-Auth 推特。我一直在 SitePoint 上阅读本教程:
Rails Authentication with OAuth 2.0 and OmniAuth
直到 运行ning rake db:migrate
让我创建用户模型并修改迁移文件时,我才发现。这是我根据这些说明创建的迁移文件:
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :provider, null: false
t.string :uid, null: false
t.string :name
t.string :location
t.string :image_url
t.string :url
add_index :users, :providers
add_index :users, :uid
add_index :users, [:provider, :uid], unique: true
t.timestamps null: false
end
end
end
但是当我 运行 rake db:migrate
它抛出这个错误:
SQLite3::SQLException: no such table: main.users: CREATE INDEX "index_users_on_providers" ON "users" ("providers")/Users/jrshafer/.rvm/gems/ruby-2.2.1/gems/sqlite3-1.3.11/lib/sqlite3/database.rb:91:in `initialize'
如果您能为这位有抱负的开发人员提供任何帮助,我们将不胜感激。
您可以在此处查看完整的存储库: kronoTweeter GitHub Repo
您应该在一个块中创建 table,然后添加索引。但是在您当前的代码中,您正试图在同一个 create_table
块中添加索引。
尝试用这段代码替换您当前的代码:
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :provider, null: false
t.string :uid, null: false
t.string :name
t.string :location
t.string :image_url
t.string :url
t.timestamps null: false
end # you have to end the create_table block here
# then you have to have the add_index statements
add_index :users, :providers
add_index :users, :uid
add_index :users, [:provider, :uid], unique: true
end
end
然后运行:
bundle exec rake db:migrate
这应该可以解决您的问题。