Код: Выделить всё
Illuminate\Database\QueryException: SQLSTATE[55006]: Object in use: 7 FEHLER: auf Datenbank »tenant_019949ce« wird von anderen Benutzern zugegriffen
DETAIL: 1 andere Sitzung verwendet die Datenbank. (Connection: tenant_host_connection, SQL: DROP DATABASE "tenant_019949ce")
< /code>
Что означает, что таблица используется другим пользователем. Таблицы создаются при создании арендатора и должны быть удалены, если арендатор удаляется, но он всегда терпит неудачу в методе Teardown Мои тесты расширяют TenacyTestCase класс:
Код: Выделить всё
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
class TenancyTestCase extends BaseTestCase {
use RefreshDatabase;
private Tenant $tenant;
protected function setUp(): void {
parent::setUp();
Config::set('tenancy.seeder_parameters.--class', TestDatabaseSeeder::class);
$this->setupDefaultTenant();
$this->forceRootUrl();
$this->withoutVite();
}
private function setupDefaultTenant(): void {
$this->tenant = Tenant::factory()->create();
$this->tenant->domains()->save(Domain::factory([
'domain' => 'tenant',
])->make());
tenancy()->initialize($this->tenant);
}
private function forceRootUrl(): void {
$parsed = parse_url(config('app.url'));
$host = $parsed['host'] ?? 'localhost.test';
$port = isset($parsed['port']) ? ':' . $parsed['port'] : '';
URL::forceRootUrl('https://tenant.' . $host . $port);
}
public function tearDown(): void {
tenancy()->end();
$this->tenant->delete();
parent::tearDown();
}
}
< /code>
Я не смог выяснить, почему еще какие -либо идеи о том, как это исправить? Это работает нормально, но база данных все равно будет сохраняться, что я не хочу. Но тесты успешны. Так как правильно удалить базу данных? < /P>
Events\TenantDeleted::class => [
JobPipeline::make([
Jobs\DeleteDatabase::class,
])->send(function(Events\TenantDeleted $event) {
return $event->tenant;
})->shouldBeQueued(true),
],
Подробнее здесь: https://stackoverflow.com/questions/797 ... ther-users
Мобильная версия