Bonjour,
J'ai un projet Symfony 6 , qui doit se connecter à 2 bases de données différentes (une Mysql et une sql server).
Mon problème est que lorsque je veux accèder à une table de la base sql serveur, j'ai une erreur doctrine m'indiquant que la table n'existe pas.
Voici l'erreur :
Ce qui est normal car la base "test" est ma base Mysqj et non SQl server. Pourtant d'après moi, tout est bien configuré.An exception occurred while executing a query: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'test.F_COMPTEG' doesn't exist
Voici mon fichier de configuration de doctrine :
Mon fichier service.yml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 parameters: # Adds a fallback DATABASE_URL if the env var is not set. # This allows you to run cache:warmup even if your # environment variables are not available yet. # You should not need to change this value. env(DATABASE_URL): '' doctrine: dbal: default_connection: default connections: default: driver: 'pdo_mysql' server_version: '5.7' charset: utf8mb4 default_table_options: charset: utf8mb4 collate: utf8mb4_unicode_ci url: '%env(resolve:DATABASE_URL)%' sqlserver: driver: 'pdo_sqlsrv' # url: '%env(resolve:DATABASE_SQL_SERVER_URL)%' host: 'sql-server-db' port: '1433' dbname: 'pfo' user: 'sa' password: 'xxxxx' charset: UTF8 options: driverOptions: SSLVerifyServerCertificate: false orm: default_entity_manager: default auto_generate_proxy_classes: '%kernel.debug%' entity_managers: default: connection: default naming_strategy: doctrine.orm.naming_strategy.underscore auto_mapping: true mappings: App: is_bundle: false type: attribute dir: '%kernel.project_dir%/src/Entity' prefix: 'App\Entity' alias: App sqlserver: connection: sqlserver naming_strategy: doctrine.orm.naming_strategy.underscore mappings: EntitySqlServer: is_bundle: false type: attribute dir: '%kernel.project_dir%/src/EntitySqlServer' prefix: 'App\EntitySqlServer' alias: App
Et mon controller :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 App\Controller\DefaultController: arguments: $em: '@doctrine.orm.default_entity_manager' $sqlServer: '@doctrine.orm.sqlserver_entity_manager'
Auriez-vous une idée d'où peut provenir le problème ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 <?php namespace App\Controller; use App\Entity\Edito; use App\EntitySqlServer\F_COMPTEG; use App\Service\StatService; use Doctrine\ORM\EntityManagerInterface; use Doctrine\Persistence\ManagerRegistry; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\Routing\Annotation\Route; use Symfony\Contracts\Translation\TranslatorInterface; class DefaultController extends AbstractController { public function __construct(private EntityManagerInterface $em,private EntityManagerInterface $sqlServer,private TranslatorInterface $translator,private StatService $statService) { } #[Route(path: '/', name: 'home_home_home')] #[Security("is_granted('', 'read')")] public function index(ManagerRegistry $entityManager) { if($this->getUser() === null ){ return $this->redirect('/logout'); } $this->sqlServer->getRepository(F_COMPTEG::class)->findAll(); $stats = $this->statService->facturationByYear(date('Y')); $totalFacture =$this->statService->totalFacturationByYear(date('Y')); $edito = $this->em->getRepository(Edito::class)->find(1); return $this->render('index.html.twig', ['edito' => $edito,'stats'=>$stats,'totalFacture'=>$totalFacture ]); } }
Merci d'avance
Partager