Ruby on rails db:migrate:未创建表,但是否创建了其他表?
我只是尝试在我的模式、事件和日历中添加两个新表。运行Ruby on rails db:migrate:未创建表,但是否创建了其他表?,ruby-on-rails,ruby,sqlite,rubymine,Ruby On Rails,Ruby,Sqlite,Rubymine,我只是尝试在我的模式、事件和日历中添加两个新表。运行db:migrate时,它运行时没有出现错误,但仅拾取了事件表并将其放入可视化数据库中。为什么会这样?这和“有很多/属于”协会有关吗?非常令人沮丧 我刚刚运行了db:migrate:status,它显示: Status Migration ID Migration Name up 20151002160900 Create messages up 20151123214812 Create calendars up
db:migrate
时,它运行时没有出现错误,但仅拾取了事件
表并将其放入可视化数据库中。为什么会这样?这和“有很多/属于”协会有关吗?非常令人沮丧
我刚刚运行了db:migrate:status
,它显示:
Status Migration ID Migration Name
up 20151002160900 Create messages
up 20151123214812 Create calendars
up 20151123220903 Create customers
up 20151123221638 Create businesses
up 20151213150347 Create events
据说它正在创建日历,但它并没有出现在我的数据库中。有人知道如何解决这个问题吗
这是我的数据库架构:
ActiveRecord::Schema.define(version: 20151213150347) do
create_table "businesses", force: true do |t|
t.string "name"
t.string "email"
t.string "normal_password_digest"
t.string "manager_password_digest"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "customers", force: true do |t|
t.datetime "created_at"
t.datetime "updated_at"
t.integer "business_id"
t.string "first_name"
t.string "last_name"
t.string "email"
t.string "password_digest"
t.string "remember_digest"
t.string "role"
end
create_table "events", force: true do |t|
t.datetime "created_at"
t.datetime "updated_at"
t.integer "calendar_id"
t.text "name"
t.datetime "start"
t.datetime "end"
t.string "location"
end
create_table "messages", force: true do |t|
t.text "content"
t.datetime "created_at"
t.datetime "updated_at"
end
end
以下是我的2个迁移文件:
class CreateCalendars < ActiveRecord::Migration
def change
create_table :calendars do |t|
t.timestamps
t.references :customer, foreign_key: true
t.string :name
t.string :googlePass
t.string :googleID
end
end
end
class CreateEvents < ActiveRecord::Migration
def change
create_table :events do |t|
t.timestamps
t.references :calendar, foreign_key: true
t.text :name
t.datetime :start
t.datetime :end
t.string :location
end
end
end
class CreateCalendars
我曾尝试在just create_calendars上运行db:migrate
,但它只是删除了所有内容,没有创建表
我试过运行db:drop
和db:setup
我已经查看了我的事件表文本,虽然它包含“calendar_id”,但这不是外键,因为没有日历表(我假设)
为什么会发生这种情况?如果迁移在过去运行,但后来发生了更改,则您会遇到此问题。Rails仅通过时间戳存储迁移的状态。它不跟踪迁移文件中的更改 您可以很容易地发现您正在重新运行日历迁移
$ bin/rake db:migrate:down VERSION=20151123214812
$ bin/rake db:migrate:up VERSION=20151123214812
了解有关和的更多信息。如果迁移在过去运行,但在之后已更改,则您将遇到该问题。Rails仅通过时间戳存储迁移的状态。它不跟踪迁移文件中的更改 您可以很容易地发现您正在重新运行日历迁移
$ bin/rake db:migrate:down VERSION=20151123214812
$ bin/rake db:migrate:up VERSION=20151123214812
了解有关和的更多信息。我假设名为
:end的列导致了该问题。您可以尝试更改为非保留的Ruby关键字并从头开始重试吗?这不是不会创建的表,但如何检查表是否已创建?运行db:drop
和db:migrate
后会发生什么?还可以尝试运行rake db:migrate:down VERSION=20151123214812
和rake db:migrate:up VERSION=20151123214812
。注意控制台中的输出,它应该打印一些东西。一个帮助您避免使用诸如end
和begin
之类的Ruby关键字的好做法是在\u处
即在
处开始和在
处结束时对日期和时间列进行后缀。您会注意到ActiveRecord对默认时间戳执行此操作。它读起来像英语:event.starts\u在
我刚试过,它似乎起作用了!谢谢大家,我还更改了我的:start和:end to start\u at和ends\u atI假定名为:end的列会导致此问题。您可以尝试更改为非保留的Ruby关键字并从头开始重试吗?这不是不会创建的表,但如何检查表是否已创建?运行db:drop
和db:migrate
后会发生什么?还可以尝试运行rake db:migrate:down VERSION=20151123214812
和rake db:migrate:up VERSION=20151123214812
。注意控制台中的输出,它应该打印一些东西。一个帮助您避免使用诸如end
和begin
之类的Ruby关键字的好做法是在\u处
即在
处开始和在
处结束时对日期和时间列进行后缀。您会注意到ActiveRecord对默认时间戳执行此操作。它读起来像英语:event.starts\u在
我刚试过,它似乎起作用了!谢谢大家,我也改变了我的:开始和:结束到开始和结束所以我该如何去修复它呢?那么我该如何去修复它呢?