我正在做一個 symfony 專案,我正在嘗試撰寫這樣的單元測驗。我遵循了每個教程,它們都以必須在某個時候執行相同的命令結束,即:
php bin/console doctrine:database:create --env=test
但我不斷收到此錯誤,不知道該怎么辦。
An exception occurred while executing a query: SQLSTATE[42000]: Syntax error or access violation: 1044 Access denied for user 'user'@'%' to database 'db_test'
這是.env:
APP_ENV=dev
APP_SECRET=4ad7f4a1f3a580dd3dbcf5636f045612
DATABASE_URL="mysql://user:[email protected]:3306/db?serverVersion=mariadb-10.5.8"
CORS_ALLOW_ORIGIN='^https?://(localhost|127\.0\.0\.1)(:[0-9] )?$'
和.env.test:
KERNEL_CLASS='App\Kernel'
APP_SECRET='$ecretf0rt3st'
SYMFONY_DEPRECATIONS_HELPER=999999
PANTHER_APP_ENV=panther
PANTHER_ERROR_SCREENSHOT_DIR=./var/error-screenshots
DATABASE_URL="mysql://user:[email protected]:3306/db?serverVersion=mariadb-10.5.8"
我的 phpunit.xml.dist 沒有改變,但這是重要的部分
<php>
<ini name="display_errors" value="1" />
<ini name="error_reporting" value="-1" />
<server name="APP_ENV" value="test" force="true" />
<server name="SHELL_VERBOSITY" value="-1" />
<server name="SYMFONY_PHPUNIT_REMOVE" value="" />
<server name="SYMFONY_PHPUNIT_VERSION" value="9.5" />
</php>
我發現這個錯誤是因為當我第一次嘗試啟動這個單元測驗時:
<?php
namespace App\Tests;
use ApiPlatform\Core\Bridge\Symfony\Bundle\Test\ApiTestCase;
class UserApiTest extends ApiTestCase
{
public function getAllUsers(): void
{
$response = static::createClient()->request('GET', '/api/users');
$this->assertResponseIsSuccessful();
}
}
使用此命令,我收到此錯誤:
C:\User\api> ./vendor/bin/phpunit --testsuite "Project Test Suite"
There was 1 error:
1) App\Tests\UserEntityTest::testSearchByName
Doctrine\DBAL\Exception\ConnectionException: An exception occurred in the driver: SQLSTATE[HY000] [1044] Access denied for user 'user'@'%' to database 'db_test'
我還應該補充一點,我正在為我的資料庫使用 Docker:
version: '3'
services:
db:
image: mariadb
ports:
- "3306:3306"
environment:
MYSQL_USER: user
MYSQL_DATABASE: db
MYSQL_PASSWORD: test
MYSQL_ROOT_PASSWORD: test
volumes:
- db-data:/var/lib/mysql
phpmyadmin:
image: phpmyadmin/phpmyadmin
links:
- db:db
depends_on:
- db
ports:
- 9000:80
environment:
MYSQL_USER: user
MYSQL_PASSWORD: test
MYSQL_ROOT_PASSWORD: test
volumes:
- /sessions
volumes:
db-data:
我不知道該怎么做我嘗試了我發現的所有東西,但似乎沒有任何效果。
任何幫助或建議將不勝感激:)
uj5u.com熱心網友回復:
您的 MySql 用戶無權創建資料庫?
一篇文章如何為此授予您的用戶: https ://chartio.com/resources/tutorials/how-to-grant-all-privileges-on-a-database-in-mysql/
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/490949.html
