我的问题是找到一种方便的方法来添加,删除,重命名和更改SQLite数据结构中的列类型。
我有一个Ruby on Rails表单,它有多个输入文本字段,如下所示(简化):
<%= form_for(@Product, :html => {:name => "product_name", :id => "product_id"}) do |form| %>
<div class="field">
<%= form.flag "Input 1" %>
<%= form.text_field :Input_1 %>
<%= form.flag "Input 2" %>
<%= form.text_field :Input_2 %>
..., etc.
</div>
<% end %>
到目前为止,我遵循了RoR迁移指南中描述的过程,因此每次我需要添加一个新的文本字段时,比如输入n,我为它生成了一个迁移,就像这样
rails generate migration AddInputToProducts Input_n:string
然后我运行了迁移
rake db:migrate
此过程的问题在于,一旦生成并运行了迁移,我就不再需要跟踪我用于迁移的确切名称(本例中为Input_n),除非我立即在我的RoR中为它创建一个条目形成并永远保持在那里。结果是我的表现在有多个我创建的条目以为我会使用它们但我实际上不再需要它们了,我不记得它们的确切名称,我想删除,重复使用,重命名或者改变他们的类型。
我的问题有两个:
答案 0 :(得分:0)
如果查看db文件夹,则会有一个名为schema.rb的文件,其中包含有关表的所有信息,包括列的名称。有清单。
对于删除,重命名等,迁移是完美的,但没有什么能阻止你使用其他工具,如Mysql Query浏览器(授予你使用MySQL)。
答案 1 :(得分:0)
如果您不想使用该工具进行迁移,那么您可以使用您使用的数据库的GUI(SQLite),您可以在那里进行更改。
答案 2 :(得分:0)
每当您生成迁移时,都会在db/migrate
中创建一个关联文件,您可以根据需要进行检查和调整。作为惯例,改变已经应用的迁移通常是不好的形式。如果您需要进行更改,请取消应用迁移,如果它仅应用于rake db:migrate:down VERSION=nnn
nnn
其中rake db:migrate:reset
是版本序列的计算机,或者创建第二次迁移撤消第一次迁移。
您的开发和部署环境越复杂,您就越需要谨慎管理迁移。
如果您不关心自己的数据,可以始终reset
从头开始构建。在微调数据库结构时,我经常在开发的早期阶段这样做。一旦我开始工作,我将提交它并进行额外的迁移以从那时起改变它。请记住{{1}}将有效地删除并重新创建数据库,因此不要在生产系统上运行它。