首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在日语on Rails活动记录中查询?

如何在日语on Rails活动记录中查询?
EN

Stack Overflow用户
提问于 2019-11-02 15:43:58
回答 1查看 178关注 0票数 1

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

下面是我的select查询和模式。

活动记录查询

代码语言:javascript
复制
@internships = Internship.where("subject LIKE :keyword OR content LIKE :keyword", keyword: params[:keyword]).all

模式

代码语言:javascript
复制
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字符集

代码语言:javascript
复制
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)

提前谢谢你。

EN

回答 1

Stack Overflow用户

发布于 2019-11-02 16:05:28

UTF-8

Unicode 8是

字符集的一种编码,它几乎支持世界上的每一种语言。

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

utf8mb4_unicode_ci

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

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

所以你最好改变你的

character_set_client, character_set_connection, character_set_results到utf8mb4

解决方案:

对于数据库:

代码语言:javascript
复制
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

对于表:

代码语言:javascript
复制
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

对于列:

代码语言:javascript
复制
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

更改配置文件my.cnf

代码语言:javascript
复制
> vim /etc/my.cnf
# 
[client]
default-character-set = utf8mb4

# 
[mysql]
default-character-set = utf8mb4

# 
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

> service mysqld restart
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58669190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档