MySQLのIncorrect string valueのエラーでcharacter_set_databaseを変える方法

MySQLを使っていて、テーブルに行をinsertしようとしたらエラーになりました。

ERROR 1366 (HY000): Incorrect string value: ‘\xE3\x81\xBE\xE3\x81\x90…’ for column ‘name’ at row 1

使っている環境
ubuntu 20.04 LTS
MySQL ver 8.0.30

MySQLの文字コードの問題のようです。「SHOW VARIABLES LIKE 'chara%';」で確認すると、こうなってます。

character_set_database が latin1 になっているからエラーになっているようです。

ここを変えるために /etc/mysql/mysql.conf.d/mysqld.cnf に「character-set-server=utf8mb4」を追記してみたのですが、変わらない。どうやら既存テーブルがあると、その設定のままらしいです。

なので、いったん既存のテーブルを全部削除(drop)しました。

それから以下のコマンドを実行します。

ALTER DATABASE データベース名 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

こんな具合です。


mysql> ALTER DATABASE testdb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
Query OK, 1 row affected (0.04 sec)

もう一度、MySQLの文字コードを確認します。

character_set_database が utf8mb4 になりました。

テーブルをcreateしなおして、エラーとなったinsert文を実行すると行の挿入ができました。

ubuntuからプリンターに印刷するのが手間不要だった。

EPSONのプリンターを買いました。ubuntuから印刷できるようにLinux用のプリンタドライバーがあるかどうかと気になっていたのですが、今はドライバーなんて不要なのですね。今さらながら知りました。ubuntuが IPP Everywhere や AirPrint に対応しているからドライバレスで使えるようです。

IPP Everywhere や AirPrint はプリンタの検出と印刷機能をOSに装備して、ドライバを入れなくても印刷ができるようにしたもののようです。プリンターも IPP Everywhere や AirPrint に対応している必要があります。

買ったプリンタは PX-M6011F という大きいEPSONのプリンターなのですが、これがAirPrintに対応していました。設定画面のプリンターを見たときにEPSONのプリンターが表示されていました。ubuntuとプリンターを無線LANにつなげれば、自動で検出されるようです。

※下のはCanonのプリンターで、こちらはLinux用のプリンタドライバーをいれてます。

CUPSの画面「http://localhost:631」のプリンタータブを見てみると、driverlessと表示されています。

EPSON_PX_M6011F_Series をクリックしてテストページの印刷をしてみると、プリンターからテストページが印刷できました。

IPP Everywhere は ChromeOS(Chromebook)が対応しているし、AirPrint は iOS(iPhoneやiPad)が対応しているから、プリンタメーカーもその対応をプリンターに入れているみたいです。今までubuntuから印刷するにはドライバー問題を気にしていたけれど、そういう心配はもうないんですね。