Laravel 5 Laravel:MariaDB-artisan迁移:刷新挂起

Laravel 5 Laravel:MariaDB-artisan迁移:刷新挂起,laravel-5,mariadb,laravel-artisan,Laravel 5,Mariadb,Laravel Artisan,我将Debian 9与MariaDB 10.1.27、Composer 1.4.2和Laravel 5.5.13一起使用 我使用创建数据库“laravel”创建了一个空数据库,并在laravel的.env配置文件中对其进行了配置,现在我有时会遇到这样的问题,即数据库操作挂起(什么也没有发生)或在浏览器中收到超时消息。仍然可以使用mysql-u laravel-p laravel连接到数据库,就像SELECT php artisan迁移 …有时工作方式类似于migrate:refresh,有时则不

我将Debian 9与MariaDB 10.1.27、Composer 1.4.2和Laravel 5.5.13一起使用

我使用
创建数据库“laravel”
创建了一个空数据库,并在laravel的
.env
配置文件中对其进行了配置,现在我有时会遇到这样的问题,即数据库操作挂起(什么也没有发生)或在浏览器中收到超时消息。仍然可以使用
mysql-u laravel-p laravel
连接到数据库,就像
SELECT

php artisan迁移

…有时工作方式类似于
migrate:refresh
,有时则不然。如果它不工作,我总是必须重新启动MariaDB服务,通常,它会在第一次再次工作

migrate:refresh
例如,在大多数情况下清除数据库并导入/加载10次迁移,然后,它什么也不做。我已经为这个任务等了大约1个小时,但它只是不断地说,迁移表丢失了,添加了,什么都没有。Artisan甚至没有说,它已经导入/加载了9个其他表

对于发送电子邮件,我正在使用supervisor,但在运行
migrate:refreshh
时,它不应该被使用

增加执行超时没有任何帮助。那么,有什么问题?在Homestead,它工作得很好。MariaDB中是否需要任何特定设置?或者我需要创建具有特定参数(如默认字符集)的数据库吗


顺便说一句:如果应用程序正在运行,我在浏览网站时有时也会收到执行超时错误消息。

当使用Supervisor控制artisan队列时,deamon肯定应该停止

sudo supervisorctl stop <YOUR_QUEUES>
当artisan试图锁定表
作业
以将其从数据库中删除,而artisan队列试图锁定表
作业
以执行其任务时,这通常会导致一种竞争条件

一般查询日志(为此,我使用了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
94准备放置表(如果存在)`jobs`
63查询启动事务
67查询保存点trans2

67准备从“作业”中选择*,其中“队列”=?和((`reserved_at`为空,`available_at`当使用Supervisor控制artisan队列时,执事一定要停止

sudo supervisorctl stop <YOUR_QUEUES>
当artisan试图锁定表
作业
以将其从数据库中删除,而artisan队列试图锁定表
作业
以执行其任务时,这通常会导致一种竞争条件

一般查询日志(为此,我使用了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
94准备放置表(如果存在)`jobs`
63查询启动事务
67查询保存点trans2

67准备从“作业”中选择*,其中“队列”=?和((`reserved_at`为空且`available_at`使用Laravel 5.5.14,问题仍然存在。使用Laravel 5.5.14,问题仍然存在。有意义。是否有任何已知的解决方案,哪个在执行此类作业时自动停止主管?有意义。是否有任何已知的解决方案,哪个在执行此类作业时自动停止主管?