MySQL8/utf8mb4
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
&tag(MySQL8/utf8mb4);
*目次 [#qf3707c3]
#contents
*関連ページ [#y545ac6f]
*参考情報 [#y0d169c2]
*概要 [#y526eacf]
-絵文字などを保存できるutf8mb4を使用したい。
-しかしutf8mb4のデフォルトのcollate(照合順)はutf8mb4_0900...
-utf8mb4_binが使いたいのだが、これを指定するとカラム毎のc...
-現状はこれは我慢するしかないのか?(MySQL 8.0.21)。
*挙動のテスト [#ya3cb301]
-/etc/my.cnfは以下。これでデフォルトのcharsetはutf8mb4、c...
collation-server=utf8mb4_bin
-testdbデータベースの生成。
create database testdb default charset=utf8mb4 collate=u...
-test_tableテーブルの生成。
#pre{{
DROP TABLE IF EXISTS test_table;
create table test_table(
title varchar(255)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_b...
}}
-テーブル確認。title列にcollateが指定されている。
#pre{{
mysql> show create table test_table;
+------------+-------------------------------------------...
| Table | Create Table ...
+------------+-------------------------------------------...
| test_table | CREATE TABLE `test_table` (
`title` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_b...
+------------+-------------------------------------------...
1 row in set (0.00 sec)
}}
-mysqldumpした場合も。上記create分が追加される。しかしそ...
#pre{{
mysql> show create table test_table;
+------------+-------------------------------------------...
| Table | Create Table ...
+------------+-------------------------------------------...
| test_table | CREATE TABLE `test_table` (
`title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8...
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_b...
+------------+-------------------------------------------...
1 row in set (0.00 sec)
}}
-すなわち最終的に文字列型の列にcharsetとcollateが伝搬して...
-railsのschema.rbが変更されてしまう可能性がありかなりうっ...
**結論 [#b6040e0e]
-collateがデフォルトのままだとこのような挙動は発生しない...
-utf8mb4_bin使うと定義がごちゃごちゃするし、2020/10/07(水...
終了行:
&tag(MySQL8/utf8mb4);
*目次 [#qf3707c3]
#contents
*関連ページ [#y545ac6f]
*参考情報 [#y0d169c2]
*概要 [#y526eacf]
-絵文字などを保存できるutf8mb4を使用したい。
-しかしutf8mb4のデフォルトのcollate(照合順)はutf8mb4_0900...
-utf8mb4_binが使いたいのだが、これを指定するとカラム毎のc...
-現状はこれは我慢するしかないのか?(MySQL 8.0.21)。
*挙動のテスト [#ya3cb301]
-/etc/my.cnfは以下。これでデフォルトのcharsetはutf8mb4、c...
collation-server=utf8mb4_bin
-testdbデータベースの生成。
create database testdb default charset=utf8mb4 collate=u...
-test_tableテーブルの生成。
#pre{{
DROP TABLE IF EXISTS test_table;
create table test_table(
title varchar(255)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_b...
}}
-テーブル確認。title列にcollateが指定されている。
#pre{{
mysql> show create table test_table;
+------------+-------------------------------------------...
| Table | Create Table ...
+------------+-------------------------------------------...
| test_table | CREATE TABLE `test_table` (
`title` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_b...
+------------+-------------------------------------------...
1 row in set (0.00 sec)
}}
-mysqldumpした場合も。上記create分が追加される。しかしそ...
#pre{{
mysql> show create table test_table;
+------------+-------------------------------------------...
| Table | Create Table ...
+------------+-------------------------------------------...
| test_table | CREATE TABLE `test_table` (
`title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8...
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_b...
+------------+-------------------------------------------...
1 row in set (0.00 sec)
}}
-すなわち最終的に文字列型の列にcharsetとcollateが伝搬して...
-railsのschema.rbが変更されてしまう可能性がありかなりうっ...
**結論 [#b6040e0e]
-collateがデフォルトのままだとこのような挙動は発生しない...
-utf8mb4_bin使うと定義がごちゃごちゃするし、2020/10/07(水...
ページ名: