2017-10-01 3 views
0

MariaDB 10.1.27, 작곡가 1.4.2 및 Laravel 5.5.13에서 데비안 9를 사용하고 있습니다.Laravel : MariaDB - 장인 마이그레이션 : 새로 고침이 만료되었습니다.

나는 을 사용하여 빈 데이터베이스를 만들고 Laravel의 .env 구성 파일에 구성했는데 이제는 데이터베이스 작업이 중단되거나 (아무 반응이 없음) 브라우저에서 시간 초과 메시지가 표시되는 경우가 있습니다. 을 사용하여 데이터베이스에 연결할 수 있습니다 (예 : SELECT 님).

php artisan migrate

... 때로는 migrate:refresh 때로는하지 같은 노력하고 있습니다. 작동하지 않는 경우에는 항상 MariaDB 서비스를 다시 시작해야하며 일반적으로 처음 작동합니다.

migrate:refresh 예를 들어 데이터베이스를 지우고 대부분의 10 번의 마이그레이션을 가져 오거나로드 한 다음 아무 작업도 수행하지 않습니다. 나는 이미이 작업을 위해 약 1 시간을 기다렸지 만, 마이그레이션 테이블이 누락되어 추가되었다는 것만을 말하고 있습니다. Artisan은 다른 테이블 9 개를 가져 오거나로드했음을 말하지 않습니다 ...

전자 메일을 보내려 할 때 관리자를 사용하고 있지만 사용하지 않아야합니다. migrate:refreshh;

실행 시간 초과를 늘리더라도 도움이되지 않습니다. 그래서, 무엇이 문제입니까? Homestead에서는 완벽하게 작동합니다. MariaDB의 특정 설정이 필요합니까? 아니면 기본 charset 같은 특정 매개 변수를 사용하여 데이터베이스를 만들어야합니까?

Btw : 응용 프로그램이 실행 중이면 웹 사이트를 탐색하는 동안 실행 시간 초과 오류 메시지가 표시되기도합니다.

+0

Laravel 5.5.14를 사용하면 문제가 계속 존재합니다. – user2966991

답변

2

장인 대기열을 제어하는 ​​슈퍼 바이저를 사용하는 경우, 데몬은 확실히 중지해야

sudo supervisorctl stop <YOUR_QUEUES> 

artisan migrate:refresh 

을 수행하는 동안 그것은 것이다 더 자주, 경쟁 조건의 종류 장인 동안 이어지지보다 jobs 테이블을 잠궈 데이터베이스에서 삭제하려고 시도하고 있습니다. Artisan 큐가 테이블 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 서버는 메타 데이터 잠금을 기다리는 두 개의 연결 (문제의 Laravel DB 사용자)을보고합니다.

처음에는 MariaDB를 다시 시작하여 문제를 아주 깨끗하게 해결했습니다. 하지만 감독관을 그만두면 변화가있었습니다.

+0

의미가 있습니다. 어떤 알려진 솔루션이 있습니까? 그런 일을하는 동안 감독관을 멈추게합니까? – user2966991