質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

1回答

1564閲覧

MySQL my.iniからのデフォルト照合順序の変更が反映されない

tbs316

総合スコア1

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2022/05/06 05:19

前提

データベース学習を始めたての者です。
未熟な点があるかもしれませんが、なるべくできることをしたうえで質問するよう心がけています。ご回答いただけると嬉しいです。

MySQLの使い方を、DB Onlineの下記ページを見ながら進めています。
https://www.dbonline.jp/mysql/myini/index6.html

Windows 10 Pro 64bit
mysql Ver 8.0.29 for Win64 on x86_64 (MySQL Community Server - GPL)
の環境で行なっています。

my.iniファイルを修正することでデフォルト照合順序の変更をしようとしています。
確認はMySQLコマンドラインツールで行なっています。

my.iniファイルはCドライブ直下に配置しており、
管理コマンドプロンプトから"C:\my.ini"を実行することでメモ帳から編集、保存をしています。

my.iniの具体的な修正としては
[mysqld]グループの下に

下記オプションと値を追加しました。
collation-server=utf8mb4_bin

補足情報にmy.iniファイルの[mysqld]グループの原文の一部を記します。

実現したいこと

my.iniファイルを修正することで
デフォルト照合順序をutf8mb4_binに変更したい。

発生している問題・エラーメッセージ

まずテスト用データベースを下記のように作成し、

mysql> create database mytest; Query OK, 1 row affected (0.01 sec)

my.iniファイルの変更後、デフォルト照合順序の変更が反映されているか確認するために、
下記をMySQLコマンドラインツールに入力し、Enterしたところ、

SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'mytest';

変更が反映されず、下記のように表示されました。

mysql> SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'mytest'; +----------------------------+------------------------+ | DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME | +----------------------------+------------------------+ | utf8mb4 | utf8mb4_0900_ai_ci | +----------------------------+------------------------+ 1 row in set (0.00 sec)

試したこと

  • コマンドプロンプトを開きなおしてから実行する。
  • Windowsキー → サービス →MySQL 80 → サービスの再起動 を行ってから再度コマンドを開いて実行する。
  • my.iniファイルの場所をC:\Program Files\MySQL\MySQL Server 8.0\binに移動する。
  • my.iniファイル内、[mysqld]グループの

sql-mode=”STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION

という記述をコメントアウトして管理者モードで実行する。

いずれも発生している問題に記した内容と同様の結果でした。

補足情報(FW/ツールのバージョンなど)

my.iniファイルの[mysqld]グループの一部:

[mysqld] # The next three options are mutually exclusive to SERVER_PORT below. # skip-networking # enable-named-pipe # shared-memory # shared-memory-base-name=MYSQL # The Pipe the MySQL Server will use. # socket=MYSQL # The TCP/IP Port the MySQL Server will listen on port=3306 # Path to installation directory. All paths are usually resolved relative to this. # basedir="C:/Program Files/MySQL/MySQL Server 8.0/" # Path to the database root datadir=C:/ProgramData/MySQL/MySQL Server 8.0\Data # The default character set that will be used when a new schema or table is # created and no character set is defined character-set-server=utf8mb4 # 照合順序の変更 collation-server=utf8mb4_bin

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

何をしたいかわかりませんが、明示的にcharsetとcollateを指定しては?

SQL

1create database mytest charset=utf8mb4 collate=utf8mb4_general_ci;

また、テーブル作成時にも同様にcharsetやcollateを指定することで
database自体のデフォルトはからなずしも必要ないように思えますが

投稿2022/05/06 05:38

yambejp

総合スコア114837

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tbs316

2022/05/06 06:16

回答ありがとうございます。 理解がまだ及んでいないことが多く、説明が変でしたら、申し訳ありません。。 データベースを作成する際に文字セットと照合順序の指定を両方とも省略した場合、 my.ini で設定したデフォルトの文字セットとデフォルトの照合順序が使用されるとのこと(本文中教材参照)だったので、 そのデフォルトを変更してみたかったのですが、うまくいかなかったため質問させていただきました。 実際はyambejpさんのおっしゃるようにデータベース作成時に一緒に指定してしまうほうが一般的なんですね。
yambejp

2022/05/06 06:33

>一般的なんですね。 一般的かどうかは重要ではなく、デフォルトを信じるかどうかの問題です。 デフォルトはあくまでデフォルトでしか無いので、想定したDBやテーブルが必要なら 常に明示的に指定してください
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問