Ruby on rails "NameError: uninitialized constant Mysql2::Client::REMEMBER_OPTIONS"

Ruby on rails "NameError: uninitialized constant Mysql2::Client::REMEMBER_OPTIONS"

我正尝试在 rails 上与 ruby 一起学习网络开发。我一直在学习 Lynda.com 的课程,我的步骤如下:

  1. 我安装了 Ruby + DevKit 2.4.4-1(x64)

  2. 我在命令行中安装了rails如下 gem install rails --version 5.0.0

  3. 我安装了MySQL版本5.7.21

  4. 我安装了mysql2gem如下 gem install mysql2

  5. 我安装了 Atom 文本编辑器

  6. 我创建了一个新项目rails new kudaweb -d mysql

  7. 我在 MySQL shell

  8. 中创建了所需的数据库

CREATE DATABASE kudaweb_development;CREATE DATABASE kudaweb_test;

  1. 然后我创建了一个新用户并运行获得了如下所有权限

GRANT ALL PRIVILEGES ON kudaweb_development.* TO 'rails_user'@'localhost' IDENTIFIED BY 'mypassword' 我也为测试数据库做了这个

  1. 我配置了database.yml文件如下:

    default: &default adapter: mysql2 encoding: utf8 pool: 5 username: rails_user password: mypassword host: localhost

  2. 我运行下面的代码检查我是否正确配置了数据库

rails db:schema:dump

我收到以下错误

C:\Users\Dj K-Staxx\Desktop\RUBY\kudaweb>rails db:schema:dump rails aborted! NameError: uninitialized constant Mysql2::Client::REMEMBER_OPTIONS bin/rails:4:in要求' bin/rails:4:在 <main>' Tasks: TOP => db:schema:dump

我不知道如何解决这个问题。我在互联网上搜索了解决方案,但无济于事。我使用的是 windows 7 64 位,对于 mysql2 gem 我使用的是版本 0.5.0

您的 0.5.0 gem 和 mysql 之间似乎存在一些配置问题。它可能没有正确构建。参见:https://github.com/brianmario/mysql2/issues/954

选项 1:尝试恢复到 0.4.90.4.10 gem

将您的 gem 文件设置为:

# ./Gemfile
...
gem 'mysql2', '0.4.9'
...

选项 2:尝试使用 c-connector

在本地编译 gem

您可能需要本地 C-connector 才能在本地正确构建 gem。参见:https://www.digitalgyan.org/how-to-install-ruby-on-rails-mysql2-gem-on-windows-10/

这可能就像从 MySQL 下载适当的文件一样简单:https://dev.mysql.com/downloads/connector/c/

在任何一种情况下,您都可以使用快速脚本来测试连接(排除 Rails 的问题)。

require 'mysql2'
client = Mysql2::Client.new(host: "localhost", username: "rails_user", password: "mypassword")

将 Gemfile 中的 mysql2 gem 更新为:

gem 'mysql2', '~> 0.5.2'