前提・実現したいこと
MySQLを遠い昔に少しだけ使っていて、そのイメージでMariaDBを使っていたら表題のように躓きました。
日本語を含むデータをINSERTしようとすると、強制的にMariaDB自体が終了してしまいます。
発生している問題・エラーメッセージ
状況としては上の画像の通りです。
英数字のみのデータなら問題ありません。
補足情報(FW/ツールのバージョンなど)
ツール等 | バージョン |
---|---|
OS | Windows10 |
MariaDB | 10.1.25-MariaDB - mariadb.org binary distribution |
Apache | 2.4.26 (Win32) |
ターミナルは通常のコマンドプロンプト(文字コード:utf8)です。
データベースの文字コード、構成等はこの画像のような形になっています。
noはSERIAL、他はTEXTです。
何卒、宜しくお願い致します。
追記
Orlofskyさんのアドバイスを基に、utf8をutf8mb4に変更しました。
結果として、挿入はできるようになりましたが、文字化けが起きてしまっています(下画像)。
1行目から3行目はコマンドプロンプト(chcp 65001としています→utf8mb4に変更が必要でしょうか?)、4行目はphpMyAdminのSQLからINSERTしました。
これはコマンドラインの文字コードの問題でしょうか?コマンドラインの文字コードについて、utf8mb4の情報があまりありませんでしたので、解決ができませんでした。
lang
1MariaDB [tester]> CREATE TABLE test2(no SERIAL, name TEXT, year INT, time TIMESTAMP) CHARSET=utf8mb4; 2Query OK, 0 rows affected (0.02 sec) 3 4MariaDB [tester]> INSERT INTO test2(name, year) VALUES('TARO', 25); 5Query OK, 1 row affected (0.01 sec) 6 7MariaDB [tester]> INSERT INTO test2(name, year) VALUES('太郎', 45); 8Query OK, 1 row affected, 1 warning (0.00 sec) 9 10MariaDB [tester]> INSERT INTO test2(name, year) VALUES('倶知安', 19); 11Query OK, 1 row affected, 1 warning (0.00 sec) 12 13MariaDB [tester]> SELECT * FROM test2; 14+----+--------+------+---------------------+ 15| no | name | year | time | 16+----+--------+------+---------------------+ 17| 1 | TARO | 25 | 2018-10-17 23:48:29 | 18| 2 | ???Y | 45 | 2018-10-17 23:48:46 | 19| 3 | ???m?? | 19 | 2018-10-17 23:49:06 | 20+----+--------+------+---------------------+ 213 rows in set (0.00 sec)
CHARSET=utf8mb4を末尾につけたコードです。
親切な人ならコピペして実行してくれることもあるので、コード(CRETE TABLE, INSERT, SELECT結果を含む)はキャプチャではなく、 https://teratail.com/help#about-markdown の[コードを入力]を使ってください。