【问题标题】:ActiveRecord::StatementInvalid: Mysql2::Error: Unknown collation: 'utf8_0900_ai_ci'ActiveRecord::StatementInvalid: Mysql2::Error: Unknown collat​​ion: 'utf8_0900_ai_ci'
【发布时间】:2018-03-15 08:12:38
【问题描述】:

我是一名新手,试图通过使用 ROR 5.0 版和 mysql 8.02 的 Lynda 视频系列来学习 ruby​​ on rails。在 DB>migrate>model.rb 文件中创建我的表条目并运行“rails db:migrate”后,我在终端中收到一个错误,这没有多大意义。 iv 使用不同的用户并将其授予 mysql 权限并在网上搜索,但没有运气。

==============================

类 CreateUsers

定义向上 create_table :用户做|t|

    t.column "first_name", :string, :limit => 25
    t.string "last_name", :limit => 50
    t.string "email", :default => '', :null => false
    t.string "password", :limit => 40

  t.timestamps
end

结束

降级

drop_table :users

结束

结束

MBP:simple_cms $ rails db:migrate 导轨中止! ActiveRecord::StatementInvalid: Mysql2::Error: Unknown collat​​ion: 'utf8_0900_ai_ci': CREATE TABLE schema_migrations (version varchar(255) COLLATE utf8_0900_ai_ci PRIMARY KEY) ENGINE=InnoDB /Users/.rvm/gems/ruby-2.3.0/gems/mysql2-0.4.9/lib/mysql2/client.rb:120:in _query' /Users/.rvm/gems/ruby-2.3.0/gems/mysql2-0.4.9/lib/mysql2/client.rb:120:inblock in query' /Users/.rvm/gems/ruby-2.3.0/gems/mysql2-0.4.9/lib/mysql2/client.rb:119:in handle_interrupt' /Users/.rvm/gems/ruby-2.3.0/gems/mysql2-0.4.9/lib/mysql2/client.rb:119:inquery' /Users/.rvm/gems/ruby-2.3.0/gems/activerecord-5.0.6/lib/active_record/connection_adapter/abstract_mysql_adapter.rb:218:in block in execute' /Users/.rvm/gems/ruby-2.3.0/gems/activerecord-5.0.6/lib/active_record/connection_adapters/abstract_adapter.rb:590:inblock in log' /Users/.rvm/gems/ruby-2.3.0/gems/activesupport-5.0.6/lib/active_support/notifications/instrumenter.rb:21:in instrument' /Users/.rvm/gems/ruby-2.3.0/gems/activerecord-5.0.6/lib/active_record/connection_adapters/abstract_adapter.rb:583:inlog' /Users/.rvm/gems/ruby-2.3.0/gems/activerecord-5.0.6/lib/active_record/connection_adapter/abstract_mysql_adapter.rb:218:in execute' /Users/.rvm/gems/ruby-2.3.0/gems/activerecord-5.0.6/lib/active_record/connection_adapters/mysql/database_statements.rb:31:inexecute' /Users/.rvm/gems/ruby-2.3.0/gems/activerecord-5.0.6/lib/active_record/connection_adapters/abstract/schema_statements.rb:278:in create_table' /Users/.rvm/gems/ruby-2.3.0/gems/activerecord-5.0.6/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:423:increate_table' /Users/.rvm/gems/ruby-2.3.0/gems/activerecord-5.0.6/lib/active_record/schema_migration.rb:27:in create_table' /Users/.rvm/gems/ruby-2.3.0/gems/activerecord-5.0.6/lib/active_record/connection_adapters/abstract/schema_statements.rb:1008:ininitialize_schema_migrations_table'

【问题讨论】:

  • ***这对我来说没有多大意义。 iv 使用了不同的 mysql 用户并授予它 mysql 权限并在网络上搜索但没有运气。
  • 你能粘贴show variables like 'collation_database';的输出吗
  • 感谢您的回复......我在哪里可以找到?在 mysql 或命令行终端中?
  • mysql client运行它
  • mysql> 显示变量,如“collat​​ion_database”; +--------------------+--------+ |变量名 |价值 | +--------------------+--------+ | collat​​ion_database | utf8mb4_0900_ai_ci | +--------------------+--------------------+ 1 行在集合中(0.26 秒)

标签: mysql ruby-on-rails ruby ruby-on-rails-3


【解决方案1】:

有一个与您的问题相关的问题:https://github.com/rails/rails/issues/28730

这已在rails v5.1.0.rc2 中修复。升级到最新版本并重新生成 schema.rb 应该可以解决您的问题。

【讨论】:

  • 我的 rails 版本是 Rails 5.0.6,我尝试使用“bundle update rails”但不会更新到 5.1 我也尝试过 gem 'rails', '~> 5.1' 但返回错误.....将rails更新到新版本不是很容易吗?
  • A bundle update 只会将您的 minor version 推送到最新版本。我建议您先将 Gemfile 中的版本更改为gem 'rails', '~> 5.1',然后运行bundle update rails。这样你就不会出错了。
  • 谢谢你修复它!我现在可以在 mysql 你的 man bitsapien 中看到我的表。
  • @bitsapien 谢谢!我们正在运行 MySQL 8.x 并尝试将 Rails 4.2 升级到 5.0 并遇到此错误。最终不得不升级到 Rails 5.2 来修复这个问题。
【解决方案2】:

如果utf8_0900_ai_ci 不起作用,也可以将通用collation 添加到您的database.yml

development:
  adapter: mysql2
  ...
  encoding: utf8
  collation: utf8_general_ci

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    • 1970-01-01
    • 2018-08-05
    • 2014-07-10
    • 1970-01-01
    • 2015-12-26
    • 2013-05-29
    相关资源
    最近更新 更多