深深感到年纪大了啊,搞个 rails 4.0 下的 mysql2 驱动搞了我快 4 个小时....也深深感到 rails 这个东西其实不是那么友善,如果想玩还蛮简单,如果用来做事情,我觉得恐怕我的战斗经历要写一大箩筐了.... 先说一下我的开发环境:
* Windows 7 64bit Enterprise * Ruby 2.0.0 * Rails 4.0.0 * MySQL 5.5
在 rails 1.x 时代把玩过一段时间,依稀记得那个时候链接个 mysql 不是那么难....只到昨天晚上我彻底的被打败了....首先不理解 mysql 和 mysql2 这 2 个驱动的区别,不过谷歌一顿之后得到了结论,rails 3.0 之后默认使用 mysql2 驱动;mysql2 驱动有着比 mysql 让人吃惊的性能提高....好吧,就用 mysql2 吧。 在度娘上(抱歉,GFW 限制,只有工作时间可以谷歌)找了几篇排名靠前的帖子,一顿折腾....结果无解....,主要错误有如下几个, 这个错误发生在成功安装了 mysql2-0.3.11-x86-mingw32.gem 之后。度娘很多结果说要用到 0.2.x 的版本就没问题,也有说用 0.3.11 可行的....但是时代是进步的,总不能停留在 0.2.x 版本吧,我不想去尝试安装 0.2.x,所以想解决掉这个 0.3.11 的问题。根据度娘出来的某篇帖子里面说是因为在安装的 mysql2-0.3.11 的 lib 目录下没有 mysql/2.0/mysql2.so 导致的,用 gem 默认安装的只有 1.8 和 1.9...我猜想是支持 Ruby 1.8 和 1.9 版本的....可是我太新潮啊,用了 2.0....同样也不想回退到 1.8 或者 1.9....所以继续找解决方案 上面推论是 0.3.11 的 mysql2 驱动不支持 Ruby 2.0,通过 gem query -r --name-matches="mysql2" -V 命令查看可用的 mysql2 驱动发现有个版本是 0.3.13,应该是最新版本,如果直接 gem install mysql2 会发现是安装这个版本....但是安装会悲剧,出现如下错误..... 谷歌之发现是不能编译 native extension 导致,于是有大神建议安装 DevKit....可是我明明就在安装 rails 的时候安装了 DevKit...因为不安装这个东西,Rails 的 bundle install 总失败啊!!!!真是不友好的 rails!!于是继续谷歌这个问题,有人建议使用-- -- with-opt-dir 参数,并下载 mysql-c-connector 6.02,将参数指定 connector 的解压缩目录....但是这个方法在我这里继续失败,还是无法编译。但是让我发现了另外一个参数----with-mysql-dir...试试这个吧,下面是见证奇迹的时刻 终于安装成功了!!!于是我赶紧尝试 rake db:migrate ....可是你们懂的,哪里那么容易喜剧收尾呢,请继续往下看 Holy 啊,rails 非要用 0.3.11....有大神的帖子说过,可以将 0.3.13 里面的 mysql2.so 拷贝到 0.3.11 下面的 mysql2/2.0/mysql2 下面去(2.0 目录自己创建)但是我还是不想这种打补丁的方式解决问题...既然 rails 不听话,那就告诉它要听话咯,修改 gemfle 这下该行了吧,哈哈,喜剧结尾
还有一点不要忘记了,将 MySQL 安装目录下 lib 目录里的 libmysql.dll 拷贝到 Ruby 安装目录下的 bin 目录里