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

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

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

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

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

解決済

MySQLが文字化けするが、my.cnfの設定方法が分からない。

Alek3
Alek3

総合スコア7

MySQL

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

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

1回答

0評価

0クリップ

209閲覧

投稿2018/12/26 09:10

編集2018/12/26 23:53

JavaでWebアプリケーションを作っていますが、日本語のデータを挿入すると「?」に置換されてしまいます。

色々試行錯誤しましたが、うまくいきません。OSはmacOS High Sierraです。

◆MySQL 設定

$ MySQL --version MySQL Ver 14.14 Distrib 5.7.21, for macos10.13 (x86_64) using EditLine wrapper

◆文字コード設定
ここの設定のlatin1がutf8になれば、問題が解決すると思っています。

mysql> show variables like 'character%'; +--------------------------+-----------------------------------------------------------+ | Variable_name | Value | +--------------------------+-----------------------------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/local/mysql-5.7.21-macos10.13-x86_64/share/charsets/ | +--------------------------+-----------------------------------------------------------+

◆my.cnfについて
文字化けの解消方法について検索すると、my.cnfに設定を追記すればいいという記事が多いですが、そもそもmy.cnfがどこにも存在しませんでした。具体的には、

$ mysql --help | grep my.cnf order of preference, my.cnf, $MYSQL_TCP_PORT, /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf

ここで記された四箇所には、my.cnfはありませんでした。

◆my.cnfを追加してもうまくいかない。
調べてもmy.cnfはあるのが当然なようで、なかなか丸ごとコピーできるところは見つからなかったのですが、結局以下のファイルを作成しました。
参考: https://www.karakaram.com/install-mysql56-homebrew#my-cnf

[client] port = 3306 socket = /tmp/mysql.sock [mysql] show-warnings #safe-updates prompt = '[\d] mysql> ' [mysqld] # basic datadir = /usr/local/var/mysql tmpdir = /tmp port = 3306 socket = /tmp/mysql.sock character-set-server = utf8 default-storage-engine = InnoDB explicit_defaults_for_timestamp = 1 lower-case-table-names = 2 # max connections max_connections = 64 # table_open_cache = max_connections * tables used in one transaction + alpha table_open_cache = 800 # table_definition_cache = all tables in mysql + max_connections + alpha table_definition_cache = 400 # open_files_limit = table_open_cache * 1.4 open_files_limit = 1120 # global buffer key_buffer_size = 16M query_cache_type = 0 # innodb_buffer_pool_size = available memory for Mysql * 0.7 innodb_buffer_pool_size = 256M # thread buffer read_buffer_size = 256K read_rnd_buffer_size = 512K join_buffer_size = 256K sort_buffer_size = 512K # InnoDB innodb_file_per_table innodb_autoextend_increment = 64 innodb_log_files_in_group = 2 innodb_log_file_size = 64M innodb_log_buffer_size = 16M innodb_flush_log_at_trx_commit = 1 innodb_flush_neighbors=0 #innodb_flush_method=O_DIRECT innodb_thread_concurrency = 2 innodb_commit_concurrency = 2 # log general_log = 0 slow_query_log = 0 [mysqldump] max_allowed_packet = 16M quick set-charset single-transaction

これを上記の四箇所のいずれかに配置すればいいと思い、試しました。手順としては、ファイルを配置→システム環境設定のMySQL内でStop MySQL Server→Start MySQL Serverです。
補足ですが、インストールにHomebrewを使いませんでした。

しかし、~/.my.cnfに配置しても、特に変化はありませんでした。その他の三箇所については、そもそもMySQLが再起動しなくなりました。

解決したいのは文字化けの問題です。よろしくお願いいたします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

m.ts10806

2018/12/27 00:46

my.iniではないのでしょうか。
Alek3

2018/12/27 03:28

OSがMacなのでmy.iniではないと思ったのですが誤りでしょうか?
m.ts10806

2018/12/27 03:32

あ、失礼しました。 例えばmy- でgrepしても見つかりませんか? デフォルトではmy-develop.cnfとかで入るはずなので。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

MySQL

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

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。