rus*_*tyx 4 ruby-on-rails rails-migrations
我有一个运行InnoDB的MySQL服务器禁用(出于性能原因),使用此设置我似乎无法使用Rails 3(使用mysql2适配器).
这是我的测试迁移:
class CreateTxts < ActiveRecord::Migration
def change
create_table(:txts, :options => 'ENGINE=MyISAM') do |t|
t.timestamps
end
end
end
Run Code Online (Sandbox Code Playgroud)
这是错误:
>rake db:migrate
rake aborted!
Mysql2::Error: Unknown storage engine 'InnoDB': CREATE TABLE `schema_migrations`
(`version` varchar(255) NOT NULL) ENGINE=InnoDB
Run Code Online (Sandbox Code Playgroud)
尝试了这里描述的解决方法,但它似乎也没有工作(我确实修改了MysqlAdapter到Mysql2Adapter以匹配我的设置).
对不起,我是Rails的新手.任何帮助将不胜感激:o
rus*_*tyx 12
要回答我自己的问题.这是environment.rb我最终使用的补丁,它适用于本机mysql驱动程序以及JRuby/JDBC-mysql:
# Load the rails application
require File.expand_path('../application', __FILE__)
# Patch Mysql adapter to default to MyISAM instead of InnoDB
require 'active_record/connection_adapters/mysql_adapter'
module ActiveRecord
module ConnectionAdapters
class MysqlAdapter
def create_table(table_name, options = {}) #:nodoc:
super(table_name, options.reverse_merge(:options => "ENGINE=MyISAM"))
end
end
end
end
# Initialize the rails application
.....
Run Code Online (Sandbox Code Playgroud)
rake db:migrate现在成功并创建所有表,包括schema_migrationsTYPE = MyISAM.
注意:对于mysql2适配器,将mysql_adapter重命名为mysql2_adapter,将MysqlAdapter重命名为Mysql2Adapter.
| 归档时间: |
|
| 查看次数: |
3495 次 |
| 最近记录: |