基本的には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は開かずに済みます。