Cvetan's avatar

Can't run tests in Laravel Sail from PhpStorm

I selected phpunit.xml configuration inside PhpStorm with remote PHP from inside docker. PHP binary is validated successfully, but when I run tests (from PhpStorm) I get following error:

Illuminate\Database\QueryException: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for mysql failed: Name or service not known (Connection: mysql, SQL: SHOW FULL TABLES WHERE table_type = 'BASE TABLE')
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:65
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:83
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:48
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connectors/MySqlConnector.php:24
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php:184
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connection.php:1177
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connection.php:1213
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connection.php:486
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connection.php:414
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connection.php:753
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connection.php:899
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connection.php:878
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connection.php:722
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connection.php:405
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Schema/MySqlBuilder.php:124
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Schema/MySqlBuilder.php:74
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Console/WipeCommand.php:71
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Console/WipeCommand.php:48
/opt/project/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:36
/opt/project/vendor/laravel/framework/src/Illuminate/Container/Util.php:41
/opt/project/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:93
/opt/project/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:35
/opt/project/vendor/laravel/framework/src/Illuminate/Container/Container.php:661
/opt/project/vendor/laravel/framework/src/Illuminate/Console/Command.php:194
/opt/project/vendor/symfony/console/Command/Command.php:312
/opt/project/vendor/laravel/framework/src/Illuminate/Console/Command.php:163
/opt/project/vendor/laravel/framework/src/Illuminate/Console/Concerns/CallsCommands.php:67
/opt/project/vendor/laravel/framework/src/Illuminate/Console/Concerns/CallsCommands.php:40
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/FreshCommand.php:44
/opt/project/vendor/laravel/framework/src/Illuminate/Console/View/Components/Task.php:37
/opt/project/vendor/laravel/framework/src/Illuminate/Console/View/Components/Factory.php:58
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/FreshCommand.php:44
/opt/project/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:36
/opt/project/vendor/laravel/framework/src/Illuminate/Container/Util.php:41
/opt/project/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:93
/opt/project/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:35
/opt/project/vendor/laravel/framework/src/Illuminate/Container/Container.php:661
/opt/project/vendor/laravel/framework/src/Illuminate/Console/Command.php:194
/opt/project/vendor/symfony/console/Command/Command.php:312
/opt/project/vendor/laravel/framework/src/Illuminate/Console/Command.php:163
/opt/project/vendor/symfony/console/Application.php:1040
/opt/project/vendor/symfony/console/Application.php:314
/opt/project/vendor/symfony/console/Application.php:168
/opt/project/vendor/laravel/framework/src/Illuminate/Console/Application.php:162
/opt/project/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:381
/opt/project/vendor/laravel/framework/src/Illuminate/Testing/PendingCommand.php:296
/opt/project/vendor/laravel/framework/src/Illuminate/Testing/PendingCommand.php:481
/opt/project/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithConsole.php:80
/opt/project/vendor/laravel/framework/src/Illuminate/Foundation/Testing/RefreshDatabase.php:73
/opt/project/vendor/laravel/framework/src/Illuminate/Foundation/Testing/RefreshDatabase.php:23
/opt/project/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestCase.php:125
/opt/project/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestCase.php:94

Caused by
PDOException: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for mysql failed: Name or service not known

/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:65
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:83
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:48
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connectors/MySqlConnector.php:24
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php:184
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connection.php:1177
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connection.php:1213
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connection.php:486
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connection.php:414
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connection.php:753
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connection.php:899
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connection.php:878
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connection.php:722
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connection.php:405
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Schema/MySqlBuilder.php:124
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Schema/MySqlBuilder.php:74
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Console/WipeCommand.php:71
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Console/WipeCommand.php:48
/opt/project/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:36
/opt/project/vendor/laravel/framework/src/Illuminate/Container/Util.php:41
/opt/project/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:93
/opt/project/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:35
/opt/project/vendor/laravel/framework/src/Illuminate/Container/Container.php:661
/opt/project/vendor/laravel/framework/src/Illuminate/Console/Command.php:194
/opt/project/vendor/symfony/console/Command/Command.php:312
/opt/project/vendor/laravel/framework/src/Illuminate/Console/Command.php:163
/opt/project/vendor/laravel/framework/src/Illuminate/Console/Concerns/CallsCommands.php:67
/opt/project/vendor/laravel/framework/src/Illuminate/Console/Concerns/CallsCommands.php:40
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/FreshCommand.php:44
/opt/project/vendor/laravel/framework/src/Illuminate/Console/View/Components/Task.php:37
/opt/project/vendor/laravel/framework/src/Illuminate/Console/View/Components/Factory.php:58
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/FreshCommand.php:44
/opt/project/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:36
/opt/project/vendor/laravel/framework/src/Illuminate/Container/Util.php:41
/opt/project/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:93
/opt/project/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:35
/opt/project/vendor/laravel/framework/src/Illuminate/Container/Container.php:661
/opt/project/vendor/laravel/framework/src/Illuminate/Console/Command.php:194
/opt/project/vendor/symfony/console/Command/Command.php:312
/opt/project/vendor/laravel/framework/src/Illuminate/Console/Command.php:163
/opt/project/vendor/symfony/console/Application.php:1040
/opt/project/vendor/symfony/console/Application.php:314
/opt/project/vendor/symfony/console/Application.php:168
/opt/project/vendor/laravel/framework/src/Illuminate/Console/Application.php:162
/opt/project/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:381
/opt/project/vendor/laravel/framework/src/Illuminate/Testing/PendingCommand.php:296
/opt/project/vendor/laravel/framework/src/Illuminate/Testing/PendingCommand.php:481
/opt/project/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithConsole.php:80
/opt/project/vendor/laravel/framework/src/Illuminate/Foundation/Testing/RefreshDatabase.php:73
/opt/project/vendor/laravel/framework/src/Illuminate/Foundation/Testing/RefreshDatabase.php:23
/opt/project/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestCase.php:125
/opt/project/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestCase.php:94

Caused by
PDOException: PDO::__construct(): php_network_getaddresses: getaddrinfo for mysql failed: Name or service not known

/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:65
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:83
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:48
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connectors/MySqlConnector.php:24
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php:184
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connection.php:1177
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connection.php:1213
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connection.php:486
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connection.php:414
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connection.php:753
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connection.php:899
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connection.php:878
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connection.php:722
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Connection.php:405
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Schema/MySqlBuilder.php:124
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Schema/MySqlBuilder.php:74
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Console/WipeCommand.php:71
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Console/WipeCommand.php:48
/opt/project/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:36
/opt/project/vendor/laravel/framework/src/Illuminate/Container/Util.php:41
/opt/project/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:93
/opt/project/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:35
/opt/project/vendor/laravel/framework/src/Illuminate/Container/Container.php:661
/opt/project/vendor/laravel/framework/src/Illuminate/Console/Command.php:194
/opt/project/vendor/symfony/console/Command/Command.php:312
/opt/project/vendor/laravel/framework/src/Illuminate/Console/Command.php:163
/opt/project/vendor/laravel/framework/src/Illuminate/Console/Concerns/CallsCommands.php:67
/opt/project/vendor/laravel/framework/src/Illuminate/Console/Concerns/CallsCommands.php:40
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/FreshCommand.php:44
/opt/project/vendor/laravel/framework/src/Illuminate/Console/View/Components/Task.php:37
/opt/project/vendor/laravel/framework/src/Illuminate/Console/View/Components/Factory.php:58
/opt/project/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/FreshCommand.php:44
/opt/project/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:36
/opt/project/vendor/laravel/framework/src/Illuminate/Container/Util.php:41
/opt/project/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:93
/opt/project/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:35
/opt/project/vendor/laravel/framework/src/Illuminate/Container/Container.php:661
/opt/project/vendor/laravel/framework/src/Illuminate/Console/Command.php:194
/opt/project/vendor/symfony/console/Command/Command.php:312
/opt/project/vendor/laravel/framework/src/Illuminate/Console/Command.php:163
/opt/project/vendor/symfony/console/Application.php:1040
/opt/project/vendor/symfony/console/Application.php:314
/opt/project/vendor/symfony/console/Application.php:168
/opt/project/vendor/laravel/framework/src/Illuminate/Console/Application.php:162
/opt/project/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:381
/opt/project/vendor/laravel/framework/src/Illuminate/Testing/PendingCommand.php:296
/opt/project/vendor/laravel/framework/src/Illuminate/Testing/PendingCommand.php:481
/opt/project/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithConsole.php:80
/opt/project/vendor/laravel/framework/src/Illuminate/Foundation/Testing/RefreshDatabase.php:73
/opt/project/vendor/laravel/framework/src/Illuminate/Foundation/Testing/RefreshDatabase.php:23
/opt/project/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestCase.php:125
/opt/project/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestCase.php:94

However when I run sail artisan test from terminal everything works. So what is the way to run tests inside Laravel Sail from PhpStorm? What am I doing wrong?

0 likes
4 replies
abd_wazzan's avatar
Level 1

You have to set up your interpreter configuration in your PhpStorm to use your container interpreter. open PhpStorm -> settings -> PHP -> CLI Interpreter -> create new one from docker, vagrant.... -> choose "Docker compose" -> select the service name (laravel.test) -> click ok -> after that you will see the option "Lifecycle" -> choose "Connect to existing container. when you run your tests make sure the sail is up.

3 likes
Cvetan's avatar

I did already. Howevet I selected docker option, because docker compose wouldn't load any services, even tough connection with docker socket was ok. That was this part:

I selected phpunit.xml configuration inside PhpStorm with remote PHP from inside docker.

It doesn't have database connection, but connection to remote interpreter is ok.

Cvetan's avatar

Thanks, I've managed to fix it. Enabling docker compose V2 in PhpStorm settings fixed the issue, with docker compose interpreter. When I did that everything worked. I thought that it doen't matter whether the connection is via docker or docker compose. Anyways, thanks a million, it works now. 🍺

1 like

Please or to participate in this conversation.