基本的にはmysqldumpでwhereにjoinを使うにある通り、
1
| |
というわけですが、肝は、
--where中でJOINを使うためにsubqueryにする--single-transactionを付けることでmysqldump: Couldn't execute 'SELECT... Table 'a' was not locked with LOCK TABLES (1100)と言われるのを防ぐ
基本的にはmysqldumpでwhereにjoinを使うにある通り、
1
| |
というわけですが、肝は、
--where中でJOINを使うためにsubqueryにする--single-transactionを付けることでmysqldump: Couldn't execute 'SELECT... Table 'a' was not locked with LOCK TABLES (1100)と言われるのを防ぐこれはもう書いてありますけど、 実際、これまでdevだったのをprod環境にして、 Timastampを含むTableのあるMySQLをbackendに据えてみると、 -Pdev環境ではうまく立ち上がっていたのに、 -PprodだとERROR 1067 (42000): Invalid default value for 'create_date' とかって言われて立ち上がりません。 エラーに直面すると、前書いてあったことなんて忘れてて、 改めて探し回っちゃいました。 結局、ですね、ubuntuの場合は、 /etc/mysql/mysql.conf.d/mysqld.cnfの[mysqld]のところに 以下を加えてrestartすれば済みます。特に2行目ですね。
1 2 | |
SwingからJavaのGUIの座を引き継いだとはいえ、 Java11ではJava本体から削除され、 OpenJFXとなるJavaFX、 でもGUI作るならJavaFXだろうなぁ、 簡単に描けるようにGroovyでないかなー、 と思ったら、ありましたGroovyFX。 早速試してみると、 本家に書いてある「Hello, World」すら以下のように失敗しました。
1 2 3 4 5 6 7 8 9 10 11 | |
色々試すと、以下のような最低限のscriptでもaaaを出力もせず 全く同じerror messageを出すので、 もうGrapeでgroovyfxを読み込んでいる時点でダメなんでしょう。
1 2 3 | |
scriptに何を書いても無視される(そこまで到達しない)わけなので、 事前にnew javafx.embed.swing.JFXPanel()して JavaFX environmentを初期化する、ということも当然効きません。 Grapeに拘っていたので、 古いversion(@Grab('org.codehaus.groovyfx:groovyfx:0.4.0'))に してnew javafx.embed.swing.JFXPanel()しておけば、 start{...}が動くことがわかりversion落としてやってましたが、 今改めて試してみると、 Grapeじゃなくてgroovy -cp groovyfx-8.0.0.jar test.groovyと Class Pathを指定すれば、 new javafx.embed.swing.JFXPanel()もなしに 「Hello World」もその通り動くことが確認できました。 そっかー、Grape諦めればよかったのかー。 -cpを指定しても足りないところはGrapeも効くので、 そぃでよかったでもんそ。
あと、MySQLからdata読む必要があったので、
1 2 3 4 5 6 7 8 | |
とすればよいと。
今回の目的は、画像を読み込んで、それにDBから読み込んだ値で四角形を描き、 そぃを画像fileとして出力する、ちゅうもんじゃった。 scene.snapshot()してからSwingFXUtils.fromFXImage(scene, null)で 描画画像をbitmap化出来ます。 それをImageIO.write()で一発でfileに書けるがじゃっどん、 そぃだと何か出来た画像が赤みがかっちゃっちょるんですよね。 どげんしたもんか、試行錯誤の挙句、ImageMagickのfrontend、 im4javaを通すとうまく行きました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
最後、stage.close()すればwindowは開かずに済みます。