Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在Rails上查询日语活动记录?_Mysql_Ruby On Rails_Ruby_Cjk - Fatal编程技术网

Mysql 如何在Rails上查询日语活动记录?

Mysql 如何在Rails上查询日语活动记录?,mysql,ruby-on-rails,ruby,cjk,Mysql,Ruby On Rails,Ruby,Cjk,我想在RubyonRails上用日语进行查询。 在我当前的代码中,它不工作,只返回一个空集。 数据库MYSQL 8.0在docker上以默认设置运行。 我应该更新MYSQL配置吗 这是我的select查询和模式 活动记录查询 模式 MYSQL字符集 提前谢谢。UTF-8 UTF-8是Unicode字符集的编码,它支持世界上几乎所有的语言 唯一的区别在于对结果进行排序,不同的字母在其他语言中的顺序可能不同。此外,在另一个排序规则中,将a与ä进行比较可能会有不同的行为 utf8mb4_unicode

我想在RubyonRails上用日语进行查询。 在我当前的代码中,它不工作,只返回一个空集。 数据库MYSQL 8.0在docker上以默认设置运行。 我应该更新MYSQL配置吗

这是我的select查询和模式

活动记录查询 模式 MYSQL字符集 提前谢谢。

UTF-8 UTF-8是Unicode字符集的编码,它支持世界上几乎所有的语言

唯一的区别在于对结果进行排序,不同的字母在其他语言中的顺序可能不同。此外,在另一个排序规则中,将a与ä进行比较可能会有不同的行为

utf8mb4_unicode_ci 对于BMP字符,utf8和utf8mb4具有相同的存储特性:相同的代码值、相同的编码、相同的长度

对于补充字符,utf8根本无法存储该字符,而utf8mb4需要四个字节来存储该字符。由于utf8根本无法存储字符,因此utf8列中没有任何补充字符,并且在从较旧版本的MySQL升级utf8数据时,不必担心转换字符或丢失数据

因此,您最好更改您的
字符集\客户端、字符集\连接、字符集\结果
到utf8mb4

解决方案: 对于数据库:
alterdatabase\u name CHARACTER SET=utf8mb4 COLLATE=utf8mb4\u unicode\u ci;
对于表:
ALTER TABLE\u name转换为字符集utf8mb4 COLLATE utf8mb4\u unicode\u ci;
对于列:
ALTER TABLE TABLE\u name CHANGE column\u name column\u name VARCHAR(191)字符集utf8mb4 COLLATE utf8mb4\u unicode\u ci;
更改配置文件my.cnf
>vim/etc/my.cnf
# 
[客户]
默认字符集=utf8mb4
# 
[mysql]
默认字符集=utf8mb4
# 
[mysqld]
字符集客户端握手=FALSE
字符集服务器=utf8mb4
排序规则服务器=utf8mb4\u unicode\u ci
>服务mysqld重启
@internships = Internship.where("subject LIKE :keyword OR content LIKE :keyword", keyword: params[:keyword]).all
create_table "internships", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci" do |t|
    t.date "start_date"
    t.date "end_date"
    t.integer "employment_number"
    t.bigint "company_id"
    t.text "content"
    t.string "subject"
    t.integer "job_type"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.date "deadline_date"
    t.text "summary"
    t.index ["company_id"], name: "index_internships_on_company_id"
  end
mysql> SHOW VARIABLES LIKE 'char%';
+--------------------------+--------------------------------+
| Variable_name            | Value                          |
+--------------------------+--------------------------------+
| character_set_client     | latin1                         |
| character_set_connection | latin1                         |
| character_set_database   | utf8                           |
| character_set_filesystem | binary                         |
| character_set_results    | latin1                         |
| character_set_server     | utf8mb4                        |
| character_set_system     | utf8                           |
| character_sets_dir       | /usr/share/mysql-8.0/charsets/ |
+--------------------------+--------------------------------+
8 rows in set (0.01 sec)