我如何使用外键执行或生成迁移?我有municipios表,我想与表关联ciudades,表将有这些字段:( nombre_id名称ID),nombre(名称),departamento(部门)在这种情况下如何运行脚手架脚本来生成外键迁移?
我从最新的转储中恢复了数据库,并尝试运行rake测试.不幸的是,有30个迁移尚未完成 我的第一个想法是评论30个迁移代码中的每个代码并运行'rake db:migrate',但必须有一个更简单的解决方案.我使用Rails 2.3.14和Postgresql 9.1.3.
我需要使用 RAILS 迁移更新数据库中的表数据。
Sample:
Table: Table_A(Col_A(number), Col_B(varchar),...)
Query: UPDATE Table_A SET Col_B = "XXX" where Col_B = "YYY"
Run Code Online (Sandbox Code Playgroud)
使用 RAILS 迁移来执行此操作的最佳方法是什么?我什至不确定 RAILS 迁移是否是更新数据库中数据的方法。任何解释都会有帮助。
由于使用 Rails + git 进行迁移是一种痛苦,所以新的刺已经出现了。
在我对我的产品数据库造成任何损害之前,以下情况会造成严重破坏吗?如果是这样,我该如何处理?
我正在一个单独的分支 ( ) 中开发一个长期功能feature/long-term。这个功能是对很多组件的大修,需要一段时间才能完成。此功能有新的迁移,已迁移到本地主机数据库。
同时,我需要通过另一个分支()修复/添加到产品系统的迁移feature/quick-fix。其中有一个迁移文件,其日期晚于feature/long-term迁移。
quick-fixthe和 the的迁移long-term彼此无关,它们不会冲突并且在不同的表上工作。它们的运行顺序并不重要。
如果我合并feature/quick-fix到 master 并db:migrate在几天/几周内合并feature/long-term迁移文件顺序将是long-term第一个。
这会以某种方式影响数据库吗?(产品数据库很重要,所以我不想reset)
对于使用MySQL的应用程序,我在Rails迁移中有以下代码:
execute <<-SQL
ALTER TABLE properties
ADD name VARCHAR(255) NOT NULL;
ALTER TABLE properties
ADD CONSTRAINT fk_properties_name
FOREIGN KEY (name)
REFERENCES valid_property_names (property_name);
SQL
Run Code Online (Sandbox Code Playgroud)
当我运行迁移时,我收到以下错误:
Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ALTER TABLE properties
Run Code Online (Sandbox Code Playgroud)
为什么我会收到此错误,如何解决?
如何在Rails 4迁移中指定整数大小的限制?(我的数据库是PostgreSQL.)
我有字段phone_number,应该是8位数.如果我指定:limit => 8,那么这是字节大小而不是数字的长度.
有没有办法做到这一点?
我一直在Ruby on Rails上开发一个项目.在开发过程中,我为我的项目生成了大量的迁移文件.有时我添加和删除了不同表中的列.
有没有办法可以将多个文件中的所有迁移合并到一个文件中?
UUIDRails 5 中关于s 的文档似乎并不多。我找到的只是以下代码:
create_table :users, id: :uuid do |t|
t.string :name
end
Run Code Online (Sandbox Code Playgroud)
如果您正在创建一个表,这很有效,但是如果您正在更新一个已经存在的表呢?
如何在表格中添加一UUID列?
我想使用迁移运行 rake 任务,因为我们希望当用户运行时,rails db:migrate此任务将通过迁移运行。
我的耙子任务是:
namespace :task_for_log do
desc "This task set by default as current date for those logs where log_date is nil"
task set_by_default_date_of_log: :environment do
Log.where("log_date IS NULL").each do |log|
log.update_attributes(log_date: log.created_at.to_date)
end
end
end
Run Code Online (Sandbox Code Playgroud)
请指导执行此任务的迁移将是什么,这里的任何人都将拯救我的生命?
此迁移工作完美
class CreateCourses < ActiveRecord::Migration[6.0]
def change
create_table :courses do |t|
t.references :user, null: false, foreign_key: true
t.string :title, limit: 500, null: false
end
reversible do |dir|
dir.up do
add_column :users, :courses_count, :integer, null: false, default: 0
end
dir.down do
remove_column :users, :courses_count
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
但是,当我运行这个它添加courses_count,但它并没有删除它rails db:rollback。可逆迁移的重点不是def change它会反转的方法add_column吗?
class CreateCourses < ActiveRecord::Migration[6.0]
def change
create_table :courses do |t|
t.references :user, null: false, foreign_key: true
t.string :title, limit: 500, null: false …Run Code Online (Sandbox Code Playgroud) rails-migrations ×10
mysql ×2
postgresql ×2
ruby ×2
activerecord ×1
git ×1
migration ×1
sql ×1
uuid ×1