ASi

MySQL

select count() 中の insert

count(field) でも count(*) でも、 for update でロックすると、insert はブロックされる。 逆の insert のトランザクション中も select count() はブロックされる。関連 https://ashura156.hatenablog.com/entry/2020/05/13/130916

0 padding された数値リテラル

数値として解釈される。 select 000010; は 10 になる。文字列フィールドに insert into Table (stringField) values (009); すると 9 が格納される。SQL標準なのかは未知。

MySQLのトランザクション分離レベルの確認

5.x SELECT @@GLOBAL.tx_isolation, @@tx_isolation;

存在しない unique key に対する select の lock

lock in share mode でも、for update でも、後発の select に対して lock はかからない。 insert はブロックされる。 mysql> begin; Query OK, 0 rows affected (0.00 sec) -- for update でも同じ mysql> select * from Users where userId="GYA" lock in …

mysql の --login-path の使い方

とても繊細。ハマりやすい。https://dev.mysql.com/doc/refman/8.0/en/mysql-config-editor.html に説明があるが、正直に言ってわかりにくいし、書いてある内容だけだと素直にいかない。OSX では mysql_config_editor は下記にある。 /usr/local/mysql/bin/m…

OSX 上の MySQL の TimeZone の変え方

公式説明は下記にあるのだが、多少トラップがある。 https://dev.mysql.com/doc/refman/5.7/en/time-zone-support.html システムテーブルを書き換える これを行わずに my.cnf にタイムゾーンを指定すると、mysqld が起動しなくなる。 既に DB を作り始めてい…

mysqldump

schema dump, DB指定 mysqldump -h 127.0.0.1 -P 3306 -u root -proot DatabaseName --routines --events --triggers --no-data --skip-add-drop-table全てのDBの場合 mysqldump -h 127.0.0.1 -P 3306 -u root -proot --all-databases --routines --events -…

mysql_upgrade

DB performance_schema の Table session_variables が無いと言って MySQLWorkbench が接続拒否られるので調べてみて、DB の更新が必要らしいことがわかった。sudo mysql_upgrade -u root -p sudo service mysqld restartこれで治った。

TomcatでUTF-8

tomcat & MySQL で UTF-8 を使うには、まとめると下記が必要。 Tomcat request doRequest() などでリクエストを扱う前に、先ず request.setCharacterEncoding("UTF-8"); を実行し、form のデータの解釈時の encoding を指定しなければならない。さらに GET …

Amazon Linux / MySQL install 〜 ssh 経由の操作まで

インストールと起動 # Amazon Linux に login ssh -i private_key.pem ec2-user@ec2-xx-xx-xx-xx.us-west-2.compute.amazonaws.com # install sudo yum install mysql56-server # boot sudo service mysqld start MySQL Workbench # MySQL Workbench setting…