2013-02-13 33 views
0

我有一个名称的建筑物表,我想放弃它,因为我忘了一列。 在cmd中,我转到文件夹并输入“sqlite3”,然后“.tables”,没有任何东西显示我。 为什么?我能做些什么?在rails和cmd红宝石sqlite3

+0

你通过迁移最初创建表? – Tomdarkness 2013-02-13 16:16:40

+0

是的,我有东西里面,但我不在乎实体的 – marios 2013-02-13 16:18:16

回答

0

应避免直接操作数据库和应用迁移来代替。如果您忘记添加列,那么您应该使用add_column创建一个新迁移,将该列添加到表中。

Alternativly如果以前的迁移是有缺失的列创建表的一个和你没有分发这种迁移却可以做rake db:rollback,编辑迁移并再次运行rake db:migrate

你运行的sqlite的命令时缺少表很可能是因为你忘了指定sqlite的文件加载:sqlite3 <db_name>

+0

我不能做db:rollback因为不是以前移民。我尝试做sqlite3建筑物,但是当我做时没有任何变化。表 – marios 2013-02-13 16:35:59

+0

如果不是先前的迁移,则编写另一个新的迁移以将列添加到表中。使用'add_column'。 – Tomdarkness 2013-02-13 16:38:30

+0

你能举个例子吗? (输入cmd的内容) – marios 2013-02-13 16:41:53

1

删除数据库表的正确方法是为其编写迁移。

迁移是一种方便的方式,您可以通过 结构化和组织化的方式更改数据库。您可以通过 手来编辑SQL的片段,但是您将负责告诉其他开发者 他们需要去运行它们。您还必须跟踪 哪些更改需要针对下次部署的 生产机器运行。

活动记录跟踪哪些迁移已经运行,因此您所有的 必须做的是更新您的源代码并运行rake db:migrate。活动 记录将确定应该运行哪些迁移。它也将 更新您的db/schema.rb文件以匹配数据库的结构。

来源:http://guides.rubyonrails.org/migrations.html

+0

我把“def down_table_table:建筑物结束”,然后我去cmd耙db:迁移和没有任何变化 – marios 2013-02-13 16:39:54