🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1737閲覧

(db) /etc/my.cnfに記述をしてutf8に変更したい

YukiTani

総合スコア19

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2021/03/11 14:38

編集2021/03/13 01:11

前提・実現したいこと

dbを日本語対応させたいと思っています。
文字化けはなく、ただ日本語が打てない状況です。(打つと消えてしまう)
日本語対応のutf8に変更したいと思っていますが、つまずいてしまいました。
解決するために1日半かかってしまいました..備忘録のためにここにログを残します。

この状態だとの日本語に対応できていません。

php

1docker-compose exec mysql bash 2mysql -u root -p 3mysql> SHOW VARIABLES LIKE '%char%'; 4+--------------------------+----------------------------+ 5| Variable_name | Value | 6+--------------------------+----------------------------+ 7| character_set_client | latin1 | 8| character_set_connection | latin1 | 9| character_set_database | latin1 | 10| character_set_filesystem | binary | 11| character_set_results | latin1 | 12| character_set_server | latin1 | 13| character_set_system | utf8 | 14| character_sets_dir | /usr/share/mysql/charsets/ | 15+--------------------------+----------------------------+ 168 rows in set (0.09 sec) 17

php

1# この状態を目指します 2mysql> SHOW VARIABLES LIKE '%char%'; 3+--------------------------+----------------------------+ 4| Variable_name | Value | 5+--------------------------+----------------------------+ 6| character_set_client | utf8 | 7| character_set_connection | utf8 | 8| character_set_database | utf8 | 9| character_set_filesystem | binary | 10| character_set_results | utf8 | 11| character_set_server | utf8 | 12| character_set_system | utf8 | 13| character_sets_dir | /usr/share/mysql/charsets/ | 14+--------------------------+----------------------------+ 158 rows in set (0.02 sec) 16

発生している問題

php

1# mysqlコンテナに入る 2[mac]$ docker-compose exec mysql bash 3root@5f:/ sudo vi/etc/my.cnf 4bash: sudo: command not found (なぜ) 5 6# ファイルの場所について調べる。 7root@5f28:/ mysql --help or mysql --help | grep my.cnf  8 order of preference, my.cnf, $MYSQL_TCP_PORT, 9/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf 10

解決策

「docker-compose.yml」のdbの「volumes:」に- 「./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf」追記させる。 ←これが大切!
私の場合、dockerの環境構築の際にやる必要があった。

php

1docker-compose exec mysql bash 2root@5f: vi /etc/my.cnf  3 4[/etc/my.cnf] 5# 私の場合は、中身にないまっさらな状態でした。 6[mysqld] 7character-set-server=utf8 8 9[mysql] 10default-character-set=utf8 11 12:wq!(保存するコマンドを打ち込み終了) 13 14root@5f: /etc/init.d/mysql restart 15#[info] Stopping MySQL Community Server 5.7.33. 16#..% 17docker-compose up -d 18#Starting laravel-docker-workspace_mysql_1 ... done 19 20# 設定ができているか確認する作業 21docker-compose exec mysql bash 22mysql -u root -p 23# Enter password: 24mysql> mysql -u root -p 25mysql> SHOW VARIABLES LIKE '%char%';

参考記事

https://runble1.com/mysql-mycnf/
https://kitsune.blog/mysql-login

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

Laravel Framework 5.8.38
docker
mac OS Catalina 10.15.7
mysql Ver 14.14 Distrib 5.7.33, for Linux (x86_64) using EditLine wrapper
mysqld Ver 5.7.33 for Linux on x86_64 (MySQL Community Server (GPL))

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

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

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

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

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

guest

回答1

0

ベストアンサー

docker-compose down docker-compose up -d

じゃなくて

docker-compose restart

じゃないですか? downってやるとコンテナ消えますよ。

投稿2021/03/11 16:40

AbeTakashi

総合スコア4848

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

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

YukiTani

2021/03/11 23:19

ありがとうございます。docker-compose restartでも、my.cnf内の記述が反映されませんでした。
AbeTakashi

2021/03/12 01:36

反映されないのは別の理由なんでしょうね。別のファイルを書き換えてるとか? ちゃんとコンテナの中の/etc/my.cnfを書き換えてますか? コンテナの外にある全然関係ない/etc/my.cnfを書き換えているとかではないですか?
YukiTani

2021/03/12 14:58 編集

コンテナ外で打ち込んでいました。コンテナ内(docker-compose exec mysql bash)でsudo vi/etc/my.cnfと打ち込もうとすると、ファイルに入ることができません。他に考えられる理由はありますでしょうか?
AbeTakashi

2021/03/12 15:04

「ファイルに入ることができません」って表現が一般的に使われる表現ではなく何のことなのかよく分かりませんが、通常ならrootでログインになるはずなのでsudo付けずにvi /etc/my.cnf で編集できると思うんですけどね。もう少し情報があればなにかしら助言できるかもしれませんが、現在の情報だとここまでが限界です。すいません。原因に近づいてきてはいると思うのですが。
AbeTakashi

2021/03/12 15:07

よくみたら質問文編集されてましたね。 bash: sudo: command not found ですから sudo コマンドがないと言ってるわけです。rootなのでsudoは必要ありません。この手の警告文はしっかり読むようにした方が良いと思います。
YukiTani

2021/03/12 15:33

コメントありがとうございます。 mysqlコンテナ内でsudoコマンドなしで、「vi /etc/mysql/my.cnf」を打つと「bash: vi: command not found」と表示されます。「/etc/init.d/mysql restart」してから、dockerを立ち上げて、コンテナ内に入り、再度コマンドを打ちましたがそれでも出来ませんでした。 「docker-compose exec app bash」では、「vi /etc/mysql/my.cnf」コマンドを打つと編集することができました。(いらない情報かと思いますが、)
AbeTakashi

2021/03/13 09:44 編集

あー、viコマンドもないんですね。Dockerコンテナの中は最低限のコマンドしかないので、viがインストールされてない場合もあります。その点は忘れていました。すいません。 本来はコンテナ内であまりやらないですが、MySQLのコンテナ内でapt-get install viとかでインストールする方法はあります(インストールの方法はMySQLコンテナのベースによって変わるのでこのコマンドが必ずしも正しいわけではないです)。もう少し一般的な方法だと、docker-compose.ymlに/etc/my.cnfをマウントする設定を入れてコンテナを作り直し、コンテナの外から直接編集する方法もあります。説明すると長くなるので「docker-compose volumes 書き方」などでググって調べてみてください。そうすればコンテナの外からテキストエディタ(Macならviでもいいです)でコンテナ内の/etc/my.cnfが編集できます。これ以外の方法として最初からMySQLが日本語設定になっているコンテナに差し替える方法もあります。その他、Dockerfileから作り直して、コンテナイメージ作成時に設定ファイルをいきなり書き換えちゃうような方法もあります。 Dockerってややこしいので、この辺が面倒であればDockerを使わない開発環境にしてもいいかもしれませんね。
YukiTani

2021/03/13 01:16

ありがとうございます。今朝無事に解決することができました。docker-compose.ymlのdb:のvolumes:に./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnfを追記して、作り直しました。その後、コンテナ内でviコマンドが出来るようになり、etc/mysql/my.cnfに書き込む事ができました。遅い時間にコメントを下さりありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問