2017-10-27 5 views
0

Perlでdbiを使用してmysqlで奇妙な動作が発生しました。MySQLのUPDATEが数秒遅れています(Perl dbi)

perlプログラムの最後に、私はテーブルにmysql UPDATEコマンドを発行します。コマンドは$dbh->execute();を使用して実行され、自動コミットがオンになっています。 実行後、プログラムは$dbh->disconnect();を発行して終了します。

perlプログラムはスクリプトの一部として実行されます。 perlプログラムが停止した直後に、別のスクリプトが実行されます。このスクリプトは更新されたテーブルのように見えますが、ここでは事が私に混乱するようになります。

スクリプト2は、テーブルの古いデータを読み込むことがあります。場合によっては更新されたものが表示されることがあります。最初のperlプログラムが$dbh->execute();をどのように処理できるのか理解できませんが、mysqlテーブルは数秒後に更新されるようです。

洞察力は役立ちます。あらかじめ乾杯。

+0

mysqlログを確認してください。https://stackoverflow.com/questions/5441972/how-to-see-log-files-in-mysql –

+0

これは、 'execute'の後に' autocommit'をオンにした場合と同じです。それは正しい? – Borodin

答えて

2

問題は、mysqlとPerlのどちらでもないことが判明しました。

問題は、2つのスクリプトがcrontabジョブによって呼び出されるスクリプトとして実行されていたことでした。指定されていない限り、crontabはbashシェルを使用して実行されませんでした。

は、より多くの情報のため https://askubuntu.com/questions/117978/script-doesnt-run-via-crontab-but-works-fine-standalone

を参照してください。

関連する問題