2020年1月12日日曜日

おうちで学べるデータベースのきほんのハマったとこ

前提:第3版を読んでいます

p.182
都市の名称の最大値、最小値の部分

mysql> select max (name) from city where countrycode = 'JPN';
ERROR 1630 (42000): FUNCTION world.max does not exist. Check the 'Function Name Parsing and Resolution' section in the Reference Manual

何がエラーか解らなかったけど、、

mysql> select max(name) from city where countrycode='JPN';
+-----------+
| max(name) |
+-----------+
| Zama      |
+-----------+
1 row in set (0.01 sec)

答え:maxとカッコの間に半角空白が入っているとエラーになります。
冊子では明らかにスペースがあるんだけど…。

***** ----- ***** ----- *****

p.192
人口を更新するクエリ
mysql> update city set name = 'Kyoto',population = 1469069 where countrycode='JPN' and district = 'Kyoto' and name = 'Kioto';
Query OK, 0 rows affected (0.00 sec)

p.188のStep1でKyotoに変更しているので、この流れのままだと変更されません。
mysql> update city set name = 'Kyoto',population = 1469069 where countrycode='JPN' and district = 'Kyoto' and name = 'Kyoto';
が正しいです。

***** ----- ***** ----- *****

正誤表
https://www.shoeisha.co.jp/book/detail/9784798135168

MySQL8サーバへ外部から接続


192.168.11.10のPCにMySQL(サーバとクライアント)をインストールして、
「Command Line Client」で接続しているのですが、別のホスト(192.168.11.15)から接続したくなりました。

現状、192.168.11.10から
①OK:「Command Line Client」で「パスワード」
②NG:コマンドプロンプトで「mysql -u root -p」
③NG:コマンドプロンプトで「"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe" -h 192.168.11.10 -u root -p」
④OK:コマンドプロンプトで「"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe" -u root -p」

という状態で、「mysqlのパスが通っていない」、「localhostしか接続が許可されてない」状態のようです。

■パスを通す
Windows10の場合、コンパネのシステムプロパティから「環境変数」の「Path」に新規に
「C:\Program Files\MySQL\MySQL Server 8.0\bin」を設定すればOKです。
コマンドプロンプトで「mysql --version」と実行してエラーがなければOKです。

■現状確認

mysql> select user,host from mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
4 rows in set (0.00 sec)

rootはlocalhostからしかアクセスできない(らしい)

■localhost以外からの接続を許可する
mysql>create user 'root'@'192.168.11.%' identified by 'パスワード';
Query OK, 0 rows affected (0.01 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.11.%' WITH GRANT OPTION;
Query OK, 0 rows affected (0.01 sec)

※mysql8.xはググってヒットする内容と設定方法が変わって糞ハマりました。。
「grant all privileges on *.* to user1@"192.168.1.%" identified by 'パスワード' with grant option;」
上記は古いMySQLのコマンドなので、エラーが出ます。

'パスワード'は現状と違うパスワードを入れると、ローカル接続とリモートパスワードが異なるのでこれもハマりポイントでした。。参照したサイトが'root'と記載していた。。

mysql> select user,host from mysql.user;
+------------------+-----------------+
| user             | host            |
+------------------+-----------------+
| root             | %               | ←間違えてrootをパスワードとして追加してしまった
| root             | 192.168.11.0/24 | ←間違えてrootをパスワードとして追加してしまった
| mysql.infoschema | localhost       |
| mysql.session    | localhost       |
| mysql.sys        | localhost       |
| root             | localhost       |
+------------------+-----------------+

その場合、ややこしいのでユーザ設定を削除しましょう。
mysql> drop user 'root'@'192.168.11.0/24';
Query OK, 0 rows affected (0.01 sec)

mysql> drop user 'root'@'%';
Query OK, 0 rows affected (0.01 sec)

これで、やっと接続できるようになりました。
・192.168.11.10からC:\Program Files\MySQL\MySQL Server 8.0\bin>mysql -h 192.168.11.10 -u root -p
・192.168.11.15からは「HeidiSQL」というソフトを使って接続できています

はーーーー、、、、疲れた。。


2020年1月4日土曜日

Office Excel 2016 桁区切りを使うとフォントが変わる

ある計算をして、大きい数値になったときに桁区切りボタンを使うと数値が見やすくなります。

今回の状況、計算結果 : 15678000

ただ、桁区切りボタンをそのセルに適用するとフォントが変わってしまうという現象が起きました。

こちら元の状態(フォントはIPAゴシック)




桁区切りボタンを押した後(フォントはMS Pゴシック)



この汚いフォントになぜ勝手に変わってしまうのか悩みましたが、解決方法が分かりましたので
備忘で記載しておきます。

***** ----- ***** ----- *****

「ホーム」タブ → 「セルのスタイル」をクリック → 「桁区切り」を右クリック → 「変更」をクリック














「フォント」のチェックを外す















これで次回からヘンなフォントにならなくなります。

Excelのバージョン確認(2016)

・ファイルを開いた状態から
 → 「ファイル」→「アカウント」

でバージョンが確認できました。