2017-10-01 14 views
0

MariaDB 10.1.27、Composer 1.4.2、Laravel 5.5.13でDebian 9を使用しています。Laravel:MariaDB - 職人の移行:リフレッシュがハングアップ

私は空のデータベースをCREATE DATABASE 'laravel'で作成し、Laravelの.env設定ファイルで設定しましたが、今ではデータベース操作がハングアップする(何も起こりません)、またはタイムアウトを超過するというメッセージが表示されることがあります。 SELECTのように、mysql -u laravel -p laravelを使用してデータベースに接続することは可能です。

php artisan migrate

...時々migrate:refresh、時にはないように取り組んでいます。動作していない場合は、常にMariaDBサービスを再起動する必要があります。通常は、初めて動作します。

migrate:refreshたとえば、データベースをクリアして10回の移行のほとんどをインポート/ロードしてから、何もしないだけです。私はすでにこの作業のために約1時間待っていましたが、移行テーブルが欠落して追加されているだけです。 Artisanは、他のテーブルをインポート/ロードしていると言っていません...

私はスーパーバイザーを使用していますが、使用してはならず、実行中はmigrate:refreshhです。

実行タイムアウトを大きくしても何の助けにもなりません。だから問題は何ですか?ホームステッドでは完璧に働いています。 MariaDBに特別な設定が必要ですか?または、デフォルトのcharsetなどの特定のパラメータを使用してデータベースを作成する必要がありますか?

Btw:アプリケーションが実行されている場合、Webサイトをブラウズしているときに実行時タイムアウトエラーメッセージが表示されることもあります。

+0

Laravel 5.5.14を使用しても問題は解決しません。 – user2966991

答えて

2

職人キューを制御するためにスーパーバイザーを使用する場合

artisan migrate:refresh 

を実行しながら、デーモンは間違いなく職人ながら、それは少なからず、競合状態の種類につながる

sudo supervisorctl stop <YOUR_QUEUES> 

を中止すべきですテーブルjobsをロックしてデータベースから削除しようとしています。アーティザンキューはテーブルjobsをロックしてタスクを実行しようとしています。

(このために、私はMariaDB 10.1.27で働いていた)、一般クエリログはこのようなものを示しています。職人ながら

94 Prepare drop table if exists `jobs` 
63 Query  START TRANSACTION 
67 Query  SAVEPOINT trans2 
67 Prepare select * from `jobs` where `queue` = ? and ((`reserved_at` is null and `available_at` <= ?) or (`reserved_at` <= ?)) order by `id` asc limit 1 for update 
67 Execute select * from `jobs` where `queue` = 'user' and ((`reserved_at` is null and `available_at` <= 1511429487) or (`reserved_at` <= 1511429397)) order by `id` asc limit 1 for update 
67 Close stmt 

を:リフレッシュコマンドをハング、そしてjobsは、スーパバイザ・によってキューに入れられていますMariaDBサーバーはメタデータロックを待っている2つの接続(問題のLaravel DBユーザーから)を報告します。

私はまた、MariaDBを再起動して問題を解決しました。問題はそれほどクリーンではありませんでした。しかし、スーパーバイザーを止めれば、その違いが生まれました。

+0

意味があります。自動化された既知のソリューションはありますか?そのような仕事をしている間スーパーバイザを停止しますか? – user2966991

関連する問題