【发布时间】:2016-08-08 16:24:42
【问题描述】:
我的 Rails 应用程序数据库出现问题,现在我无法完成任何迁移。
我在命令行上运行了以下命令,结果如下 -
PRAGMA 表信息(事件);
0|id|INTEGER|1||1
1|title|varchar|0||0
2|location|varchar|0||0
3|date|date|0||0
4|time|time|0||0
5|description|text|0||0
6|organised_by|varchar|0||0
7|created_at|datetime|1||0
8|updated_at|datetime|1||0
9|user_id|integer|0||0
10|image_file_name|varchar|0||0
11|image_content_type|varchar|0||0
12|image_file_size|integer|0||0
13|image_updated_at|datetime|0||0
14|category_id|integer|0||0
15|url|varchar|0||0
16|number_of_spaces|integer|0||0
17|price|integer|0||0
18|is_free|boolean|0||0
19|organiser_profile|url|0||0
这里的问题是这张桌子上的第 19 号 -
19|organiser_profile|url|0||0
Url 不是输入错误的可接受数据类型。我相信这是阻止我的数据库提交任何进一步迁移的绊脚石。
我是 Rails 的新手,以前从未手动修改过数据库。我想要做的是以下 -
删除/移除/转储 - 从我的事件表中删除 19。整个 线必须消失。
在我执行 rake db:drop 之前检查数据库中的内容(此应用程序正在开发中,因此不会有 很多
在我执行以下操作之前 - bundle exec rake db:drop db:create db:migrate,我想简要了解一下这会带来什么后果
我很确定这是解决此问题并允许我再次执行迁移并继续使用我的应用程序所需要的。我以前从未做过上述任何事情,如果在此过程中提供任何帮助,我将非常感激。
【问题讨论】:
-
你有一个现有的 Rails 应用程序,它设置了一个表,其中包含一个
url类型的列,并且你试图让它在 SQLite 之上运行?organiser_profile定义在哪里,schema.rb?这个应用程序打算与什么数据库一起使用? -
不,列是organiser_profile,我使用的类型是无效的url。我现在需要从我的数据库中完全删除它。在 schema.rb 中,我收到以下消息 - '#could not dump table "events" because of following NoMethodError # undefined method `[]' for nil:NilClass'。这显然是因为迁移错误 - 我想不出其他可能的原因(我已经检查了所有内容)。该应用程序是一个活动网站 - 创建/预订活动。
-
是的,但是这个
organiser_profile专栏是从哪里来的?你是手动创建的吗?您是否尝试在现有 SQLite 数据库之上构建应用程序? -
否,该列是通过迁移生成的。这是我完成的最后一次迁移。从那以后每一个都没有工作。
-
所以迁移只成功了一半:它添加了类型错误的列,但没有成功重新生成
schema.rb,对吧?删除有问题的迁移,手动删除列(sqlite3内部的alter table t drop column c),使用正确的列类型重新创建迁移,然后继续。
标签: ruby-on-rails ruby sqlite rake database-migration