修改rake db命令以使用不同的mysql引擎

der*_*use 2 rake ruby-on-rails ruby-on-rails-3

我试图在mysql集群上设置rails 3应用程序.我注意到每当我使用rake db:create或rake db:migrate创建表时,都会使用engine = InnoDb创建表.由于我使用的是MySQL集群,因此存在问题.我必须使用engine = NDB创建表.我想知道什么是修改rake db的最佳方法:create和rake db:migrate逻辑,以便它创建带有engine = NDB的表.

谢谢/

Agu*_*tyo 5

对于现有表,您应该创建一个迁移到alter table,在其中需要执行alter table命令:

class Change < ActiveRecord::Migration
  def self.up
    execute('ALTER TABLE some_tables ENGINE = NDB')
  end

  def self.down
    execute('ALTER TABLE some_tables ENGINE = innodb')
  end
end
Run Code Online (Sandbox Code Playgroud)

但是对于新架构,您可以在create_table方法上使用:options选项:

create_table :some_tables, :option => 'ENGINE = NDB' do |t|
 ...
end
Run Code Online (Sandbox Code Playgroud)

http://guides.rubyonrails.org/v3.0.3/migrations.html#creating-a-table