'Symfony 4.1 : You have requested a non-existent service "doctrine"

Hello i'm making a new project on symfony 4.1,

i use postgres 10.5 as my SGBD.

i created an entity with the maker bundle of symfony and now i try to make a migration still with the maker bundle with that command :

php bin/console make:migration

here is the stack trace :

In Container.php line 274:

  You have requested a non-existent service "doctrine". Did you mean one of these: "console.command.public_alias.doctrine_cache.contains_command", "console.command.public
  _alias.doctrine_cache.delete_command", "console.command.public_alias.doctrine_cache.flush_command", "console.command.public_alias.doctrine_cache.stats_command", "consol
  e.command.public_alias.doctrine_migrations.diff_command", "console.command.public_alias.doctrine_migrations.execute_command", "console.command.public_alias.doctrine_mig
  rations.generate_command", "console.command.public_alias.doctrine_migrations.latest_command", "console.command.public_alias.doctrine_migrations.migrate_command", "conso
  le.command.public_alias.doctrine_migrations.status_command", "console.command.public_alias.doctrine_migrations.version_command"?

Exception trace:
 Symfony\Component\DependencyInjection\Container->make() at /opt/www/jame/dataneo-erp/vendor/symfony/dependency-injection/Container.php:222
 Symfony\Component\DependencyInjection\Container->get() at /opt/www/jame/dataneo-erp/vendor/doctrine/doctrine-migrations-bundle/Command/Helper/DoctrineCommandHelper.php:21
 Doctrine\Bundle\MigrationsBundle\Command\Helper\DoctrineCommandHelper::setApplicationHelper() at /opt/www/jame/dataneo-erp/vendor/doctrine/doctrine-migrations-bundle/Command/MigrationsDiffDoctrineCommand.php:34
 Doctrine\Bundle\MigrationsBundle\Command\MigrationsDiffDoctrineCommand->execute() at /opt/www/jame/dataneo-erp/vendor/symfony/console/Command/Command.php:251
 Symfony\Component\Console\Command\Command->run() at /opt/www/jame/dataneo-erp/vendor/symfony/maker-bundle/src/Maker/MakeMigration.php:78
 Symfony\Bundle\MakerBundle\Maker\MakeMigration->generate() at /opt/www/jame/dataneo-erp/vendor/symfony/maker-bundle/src/Command/MakerCommand.php:100
 Symfony\Bundle\MakerBundle\Command\MakerCommand->execute() at /opt/www/jame/dataneo-erp/vendor/symfony/console/Command/Command.php:251
 Symfony\Component\Console\Command\Command->run() at /opt/www/jame/dataneo-erp/vendor/symfony/console/Application.php:904
 Symfony\Component\Console\Application->doRunCommand() at /opt/www/jame/dataneo-erp/vendor/symfony/framework-bundle/Console/Application.php:89
 Symfony\Bundle\FrameworkBundle\Console\Application->doRunCommand() at /opt/www/jame/dataneo-erp/vendor/symfony/console/Application.php:262
 Symfony\Component\Console\Application->doRun() at /opt/www/jame/dataneo-erp/vendor/symfony/framework-bundle/Console/Application.php:75
 Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at /opt/www/jame/dataneo-erp/vendor/symfony/console/Application.php:145
 Symfony\Component\Console\Application->run() at /opt/www/jame/dataneo-erp/bin/console:39

here is the code of some config files :

services.yaml

# This file is the entry point to configure your own services.
# Files in the packages/ subdirectory configure your dependencies.

# Put parameters here that don't need to change on each machine where the app is deployed
# https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration
parameters:
    locale: 'fr'

services:
        autowire: true
        autoconfigure: true
        public: false

    App\:
        resource: '../src/*'
        exclude: '../src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}'

    App\Controller\:
        resource: '../src/Controller'
        tags: ['controller.service_arguments']

config/packages/doctrine.yaml

parameters:
    env(DATABASE_URL): ''

    doctrine:
        dbal:
            driver: 'pdo_pgsql'
            server_version: '10.5'
            charset: utf8mb4
            default_table_options:
                charset: utf8mb4
                collate: utf8mb4_unicode_ci

            url: '%env(resolve:DATABASE_URL)%'
        orm:
            auto_generate_proxy_classes: '%kernel.debug%'
            naming_strategy: doctrine.orm.naming_strategy.underscore
            auto_mapping: true
            mappings:
                App:
                    is_bundle: false
                    type: annotation
                    dir: '%kernel.project_dir%/src/Entity'
                    prefix: 'App\Entity'
                    alias: App

and my .env

APP_ENV=dev
APP_SECRET=secret
DATABASE_URL="pgsql://erp_dev:[email protected]:5432/erp"
MAILER_URL=null://localhost

Edit :

I tried to put "services : public : true" in services.yaml as mentioned in second answer and the result is a new error :

In DefinitionErrorExceptionPass.php line 54:

  [Symfony\Component\DependencyInjection\Exception\RuntimeException]
  Cannot autowire service "App\Repository\SocieteRepository": argument "$registry" of method "__construct()" refer
  ences interface "Symfony\Bridge\Doctrine\RegistryInterface" but no such service exists. Did you create a class t
  hat implements this interface?


Exception trace:
 Symfony\Component\DependencyInjection\Compiler\DefinitionErrorExceptionPass->processValue() at /opt/www/jame/dataneo-erp/vendor/symfony/dependency-injection/Compiler/AbstractRecursivePass.php:60
 Symfony\Component\DependencyInjection\Compiler\AbstractRecursivePass->processValue() at /opt/www/jame/dataneo-erp/vendor/symfony/dependency-injection/Compiler/DefinitionErrorExceptionPass.php:32
 Symfony\Component\DependencyInjection\Compiler\DefinitionErrorExceptionPass->processValue() at /opt/www/jame/dataneo-erp/vendor/symfony/dependency-injection/Compiler/AbstractRecursivePass.php:39
 Symfony\Component\DependencyInjection\Compiler\AbstractRecursivePass->process() at /opt/www/jame/dataneo-erp/vendor/symfony/dependency-injection/Compiler/Compiler.php:95
 Symfony\Component\DependencyInjection\Compiler\Compiler->compile() at /opt/www/jame/dataneo-erp/vendor/symfony/dependency-injection/ContainerBuilder.php:736
 Symfony\Component\DependencyInjection\ContainerBuilder->compile() at /opt/www/jame/dataneo-erp/vendor/symfony/http-kernel/Kernel.php:519
 Symfony\Component\HttpKernel\Kernel->initializeContainer() at /opt/www/jame/dataneo-erp/vendor/symfony/http-kernel/Kernel.php:123
 Symfony\Component\HttpKernel\Kernel->boot() at /opt/www/jame/dataneo-erp/vendor/symfony/framework-bundle/Console/Application.php:65
 Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at /opt/www/jame/dataneo-erp/vendor/symfony/console/Application.php:145
 Symfony\Component\Console\Application->run() at /opt/www/jame/dataneo-erp/bin/console:39

Here is the result of the command

php bin/console debug:container | grep doctrine

  console.command.public_alias.doctrine_cache.contains_command                         alias for "doctrine_cache.contains_command"                                           
  console.command.public_alias.doctrine_cache.delete_command                           alias for "doctrine_cache.delete_command"                                             
  console.command.public_alias.doctrine_cache.flush_command                            alias for "doctrine_cache.flush_command"                                              
  console.command.public_alias.doctrine_cache.stats_command                            alias for "doctrine_cache.stats_command"                                              
  console.command.public_alias.doctrine_migrations.diff_command                        alias for "doctrine_migrations.diff_command"                                          
  console.command.public_alias.doctrine_migrations.execute_command                     alias for "doctrine_migrations.execute_command"                                       
  console.command.public_alias.doctrine_migrations.generate_command                    alias for "doctrine_migrations.generate_command"                                      
  console.command.public_alias.doctrine_migrations.latest_command                      alias for "doctrine_migrations.latest_command"                                        
  console.command.public_alias.doctrine_migrations.migrate_command                     alias for "doctrine_migrations.migrate_command"                                       
  console.command.public_alias.doctrine_migrations.status_command                      alias for "doctrine_migrations.status_command"                                        
  console.command.public_alias.doctrine_migrations.version_command                     alias for "doctrine_migrations.version_command"                                       
  doctrine_cache.abstract.apc                                                          Doctrine\Common\Cache\ApcCache                                                        
  doctrine_cache.abstract.apcu                                                         Doctrine\Common\Cache\ApcuCache                                                       
  doctrine_cache.abstract.array                                                        Doctrine\Common\Cache\ArrayCache                                                      
  doctrine_cache.abstract.chain                                                        Doctrine\Common\Cache\ChainCache                                                      
  doctrine_cache.abstract.couchbase                                                    Doctrine\Common\Cache\CouchbaseCache                                                  
  doctrine_cache.abstract.file_system                                                  Doctrine\Common\Cache\FilesystemCache                                                 
  doctrine_cache.abstract.memcache                                                     Doctrine\Common\Cache\MemcacheCache                                                   
  doctrine_cache.abstract.memcached                                                    Doctrine\Common\Cache\MemcachedCache                                                  
  doctrine_cache.abstract.mongodb                                                      Doctrine\Common\Cache\MongoDBCache                                                    
  doctrine_cache.abstract.php_file                                                     Doctrine\Common\Cache\PhpFileCache                                                    
  doctrine_cache.abstract.predis                                                       Doctrine\Common\Cache\PredisCache                                                     
  doctrine_cache.abstract.redis                                                        Doctrine\Common\Cache\RedisCache                                                      
  doctrine_cache.abstract.riak                                                         Doctrine\Common\Cache\RiakCache                                                       
  doctrine_cache.abstract.sqlite3                                                      Doctrine\Common\Cache\SQLite3Cache                                                    
  doctrine_cache.abstract.void                                                         Doctrine\Common\Cache\VoidCache                                                       
  doctrine_cache.abstract.wincache                                                     Doctrine\Common\Cache\WinCacheCache                                                   
  doctrine_cache.abstract.xcache                                                       Doctrine\Common\Cache\XcacheCache                                                     
  doctrine_cache.abstract.zenddata                                                     Doctrine\Common\Cache\ZendDataCache                                                   
  doctrine_cache.contains_command                                                      Doctrine\Bundle\DoctrineCacheBundle\Command\ContainsCommand                           
  doctrine_cache.delete_command                                                        Doctrine\Bundle\DoctrineCacheBundle\Command\DeleteCommand                             
  doctrine_cache.flush_command                                                         Doctrine\Bundle\DoctrineCacheBundle\Command\FlushCommand                              
  doctrine_cache.stats_command                                                         Doctrine\Bundle\DoctrineCacheBundle\Command\StatsCommand                              
  doctrine_migrations.diff_command                                                     Doctrine\Bundle\MigrationsBundle\Command\MigrationsDiffDoctrineCommand                
  doctrine_migrations.execute_command                                                  Doctrine\Bundle\MigrationsBundle\Command\MigrationsExecuteDoctrineCommand             
  doctrine_migrations.generate_command                                                 Doctrine\Bundle\MigrationsBundle\Command\MigrationsGenerateDoctrineCommand            
  doctrine_migrations.latest_command                                                   Doctrine\Bundle\MigrationsBundle\Command\MigrationsLatestDoctrineCommand              
  doctrine_migrations.migrate_command                                                  Doctrine\Bundle\MigrationsBundle\Command\MigrationsMigrateDoctrineCommand             
  doctrine_migrations.status_command                                                   Doctrine\Bundle\MigrationsBundle\Command\MigrationsStatusDoctrineCommand              
  doctrine_migrations.version_command                                                  Doctrine\Bundle\MigrationsBundle\Command\MigrationsVersionDoctrineCommand             
  maker.doctrine_helper                                                                Symfony\Bundle\MakerBundle\Doctrine\DoctrineHelper                                    
  sensio_framework_extra.converter.doctrine.orm                                        Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter      
  sensio_framework_extra.converter.doctrine.orm.expression_language                    alias for "sensio_framework_extra.converter.doctrine.orm.expression_language.default" 
  sensio_framework_extra.converter.doctrine.orm.expression_language.default            Symfony\Component\ExpressionLanguage\ExpressionLanguage 

Thank you a lot.



Solution 1:[1]

Change the following line in your services.yml

services:
    public: false 

by

services:
    public: true

Solution 2:[2]

I had the same error when I tried to add unit tests for my custom symfony bundle. In /tests/App/AppKernel.php I have loaded DoctrineBundle:

<?php

namespace App\Tests\App;

use Doctrine\Bundle\DoctrineBundle\DoctrineBundle;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\Loader\LoaderInterface;
use Symfony\Component\HttpKernel\Kernel;
use Symfony\Bundle\FrameworkBundle\FrameworkBundle;
use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;

class AppKernel extends Kernel
{
    use MicroKernelTrait;
    public function __construct()
    {

        parent::__construct('test', true);
    }

    public function registerBundles(): iterable
    {
        return array(
            new FrameworkBundle(),
            new DoctrineBundle(),
        );
    }

    protected function configureContainer(ContainerBuilder $containerBuilder, LoaderInterface $loader): void
    {
        $loader->load(__DIR__.'/config/config.yml');

        $loader->load(__DIR__.'/config/services.yml');
    }
}

I did not need DB connection so I did not add doctrine configurations, but because doctrine configuration was missing I got this error. The Solution was to add doctrine configuration for tests /tests/App/config/doctrine.yml:

doctrine:
  dbal:
    url: '%env(resolve:DATABASE_URL)%'
  orm:
    auto_generate_proxy_classes: true
    naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
    auto_mapping: true
    mappings:
      App:
        is_bundle: false
        dir: '%kernel.project_dir%/Entity'
        prefix: 'MainBundle\Entity'
        alias: App

and load it in /tests/App/AppKernel.php:

    protected function configureContainer(ContainerBuilder $containerBuilder, LoaderInterface $loader): void
    {
        $loader->load(__DIR__.'/config/config.yml');
        $loader->load(__DIR__.'/config/services.yml');

        $loader->load(__DIR__.'/config/doctrine.yml');
    }

Note: you will need to configure phpunit.xml.dist to use this AppKernel file.

I needed EntityManager for my tests, for this I had to add doctrine.dbal and doctrine.orm, but just to solve this error doctrine.dbal configuration is enough.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Jon
Solution 2 Nuryagdy Mustapayev