Ruby on rails RubyonRails-创建错误的Schema.rb文件?
我说db/schema.rb文件应该从rake db:migrate上的db/migrate文件中提取,对吗?我正在运行一个rakedb:migrate,它正在添加一个在migrate和模型中都没有定义的表。有什么想法吗 迁移文件(仅一个):Ruby on rails RubyonRails-创建错误的Schema.rb文件?,ruby-on-rails,activerecord,rake,migrate,Ruby On Rails,Activerecord,Rake,Migrate,我说db/schema.rb文件应该从rake db:migrate上的db/migrate文件中提取,对吗?我正在运行一个rakedb:migrate,它正在添加一个在migrate和模型中都没有定义的表。有什么想法吗 迁移文件(仅一个): 我之前添加了一个用户,但没有正确地添加,所以我销毁了它。不确定我在销毁部件时哪里出错了…如果数据库中没有任何重要数据,可以运行rake db:drop然后rake db:create。然后运行rakedb:migrate,它将更新您的模式 如果数据库中没有
我之前添加了一个用户,但没有正确地添加,所以我销毁了它。不确定我在销毁部件时哪里出错了…如果数据库中没有任何重要数据,可以运行
rake db:drop
然后rake db:create
。然后运行rakedb:migrate
,它将更新您的模式 如果数据库中没有任何重要数据,可以运行rake db:drop
然后rake db:create
。然后运行rakedb:migrate
,它将更新您的模式 需要注意的是,rake db:migrate
将轮询数据库的当前状态(单独的迁移),并相应地更新schema.rb。例如,如果您进入SQL命令行并添加一个表,然后运行rake db:migrate
,无论是否有迁移,schema.rb都将反映新表。需要注意的是rake db:migrate
将轮询您的数据库的当前状态(独立于迁移),并相应地更新schema.rb。例如,如果进入SQL命令行并添加一个表,然后运行rake db:migrate
,schema.rb将反映新表是否存在迁移。可能是您忘记定义环境变量
Gemfile
并验证您没有在您的环境中使用sqlite
gemrake db:drop
然后键入rake db:drop
命令,如果作为输出收到空字符串,则可能忘记设置环境变量config/database.yml
文件并找到可以使用它们的地方。您应该可以找到这样的内容:数据库:
dotenv
或figaro
gems,可能您忘记了在那里创建适当的文件或定义变量可能是您忘记定义环境变量
Gemfile
并验证您没有在您的环境中使用sqlite
gemrake db:drop
然后键入rake db:drop
命令,如果作为输出收到空字符串,则可能忘记设置环境变量config/database.yml
文件并找到可以使用它们的地方。您应该可以找到这样的内容:数据库:
dotenv
或figaro
gems,可能您忘记了在那里创建适当的文件或定义变量你能展示一下你的模式和迁移文件吗?很抱歉。另外,我提到我之前确实创建了脚手架,但我破坏了它。它不会读取数据库,是吗?我使用的是SQLite,之前我发现有一个表存在错误,但它不允许我删除它。如果数据库中没有任何重要数据,可以运行
rake db:drop
然后rake db:create
。然后运行rakedb:migrate
,它应该会干净地更新您的模式。这很有效!不太清楚为什么rake db:migrate读取数据库。。。难道它不应该只读取迁移文件吗?rake db:migrate不会读取数据库。如果您在模式文件上看到,它有一个版本。该版本与最新迁移的时间戳匹配。将不会读取早于架构版本的迁移来更新数据库。您能在那里显示架构和迁移文件吗?很抱歉。另外,我提到我之前确实创建了脚手架,但我破坏了它。它不会读取数据库,是吗?我使用的是SQLite,之前我发现有一个表存在错误,但它不允许我删除它。如果数据库中没有任何重要数据,可以运行rake db:drop
然后rake db:create
。然后运行rakedb:migrate
,它应该会干净地更新您的模式。这很有效!不太清楚为什么rake db:migrate读取数据库。。。难道它不应该只读取迁移文件吗?rake db:migrate不会读取数据库。如果您在模式文件上看到,它有一个版本。该版本与最新迁移的时间戳匹配。不会读取架构版本之前的迁移以更新数据库。
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :email
t.string :hashed_password
t.timestamps
end
end
end
ActiveRecord::Schema.define(:version => 20121113214159) do
create_table "user_categories", :force => true do |t|
t.string "title"
t.string "description"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "users", :force => true do |t|
t.string "email"
t.string "hashed_password"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
end