![](/img/trans.png)
[英]How to start a Symfony server with environment variables from .env.test?
[英]How to create a test database when Symfony commands append '_test' to the database name in .env.test?
嘗試在測試數據庫上運行遷移會返回附加“_test”的測試數據庫名稱。 如何正確創建測試數據庫(以及稍后加載固定裝置)?
例如:
使用命令symfony new simple --version="6.1.*" --webapp
創建了一個新項目,並使用make:entity
創建了一些實體。 在 MySQL 8 中,創建了名為simple
和simple_test
的數據庫。
.env
包含DATABASE_URL="mysql://name:password@127.0.0.1:3306/simple?serverVersion=8&charset=utf8mb4"
.env.test
包含DATABASE_URL="mysql://name:password@127.0.0.1:3306/simple_test?serverVersion=8&charset=utf8mb4"
運行php bin/console doctrine:migrations:migrate
結果如預期:
WARNING! You are about to execute a migration in database "simple" that could result in schema changes and data loss. Are you sure you wish to continue? (yes/no) [yes]:
> y
[notice] Migrating up to DoctrineMigrations\Version20220907223538
[notice] finished in 4220.2ms, used 22M memory, 1 migrations executed, 7 sql queries
安慰:
php bin/console doctrine:migrations:migrate --env=test
.env.test
...
DATABASE_URL="mysql://name:password@127.0.0.1:3306/simple_test?serverVersion=8&charset=utf8mb4"
結果是:
In ExceptionConverter.php line 101:
An exception occurred in the driver: SQLSTATE[HY000] [1049] Unknown database 'simple_test_test'
In Exception.php line 28:
SQLSTATE[HY000] [1049] Unknown database 'simple_test_test'
In Driver.php line 28:
SQLSTATE[HY000] [1049] Unknown database 'simple_test_test'
文本_test
附加到.env.test
中使用的任何數據庫名稱
好吧,我會[在這里插入自虐]。 我想這種行為記錄在某處 - 我還沒有看到。
當php bin/console doctrine:migrations:migrate --env=test
假設存在帶有_test
的 dev/prod 數據庫名稱時。
在過去,我需要明確測試數據庫的名稱。 Symfony 已決定所有測試數據庫將是 dev/prod 數據庫的名稱,並附加_test
。 所以現在您可以在.env
和.env.test
中使用相同的DATABASE_URL...
有時一個人得到了太多的幫助!
編輯:檢查.env.test上的.env.test
文檔。 我上面描述的行為不存在! 文檔顯示 URL 包括_test
在數據庫名稱中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.