2017-06-07 1 views
0

Je développe une application utilisant Symfony 3 (php 7.1) avec la base de données SQL Server avec AlwaysOn. AlwaysOn est un serveur SQL supportant la haute disponibilité et la reprise après sinistre, et Doctrine 2 ne fonctionne pas bien avec ce paradigme.Doctrine PHP avec SQL Server Toujours activé

J'ai développé un CRUD pour le tester pour la section infrastructure de mon travail qui a implémenté cette base de données. À la première fois, cela fonctionnait correctement et persistait bien. Mais, quand ils changent l'instance pour un autre, comme quand cela arrive si le premier cesse de fonctionner, allez automatiquement à l'autre instance avec la même structure de base de données et les mêmes données. Quand il arrive que je reçois un message d'erreur de la doctrine:

Fatal error: Invalid handle returned. in C:\xampp\htdocs\testesql\vendor\doctrine\dbal\lib\Doctrine\DBAL\Driver\PDOConnection.php on line 43 

Il ressemble à la doctrine met en cache quelque chose qui ne fonctionne pas avec ce paradigme de la base de données. J'utilise le pilote Microsoft SQL Server (pdo_sqlsrv). Quelqu'un pourrait-il m'aider? Je serais heureux.

+0

Il existe des suggestions pour essayer 'ConnectionPooling = 0' en utilisant' pdo_sqlsrv'. La documentation de Doctrines indique même qu'il y a des problèmes avec leurs tests en utilisant 'pdo_sqlsrv'. http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#driver. Je n'ai pas essayé d'utiliser pdo_sqlsrv en profondeur avant, donc je ne sais pas si c'est une réponse digne. –

Répondre

1

Problème résolu! Il est très difficile de travailler avec SQL Server Always On considérant que c'est une nouvelle technologie et PHP 7.1 l'est aussi. (08/06/17)

Je résolu le problème de changer de pilote symfony doctrine de "PDO_SQLSRV" juste "sqlsrv" follwing Doctrine 2 Documentation infos.

Si quelqu'un a un problème avec SQL Server Toujours en utilisant PHP, rappelez-vous:

  • Il est seulement possible de se connecter avec différentes instances utilisateur Windows (AD ou LDAP). Vous ne seriez pas en mesure de vous connecter en utilisant l'utilisateur DB et de passer en utilisant différentes instances. Pour vous connecter dans SQL Server Toujours activé, vous devez vous connecter à la base de données en utilisant l'authentification Apache pour le faire fonctionner correctement.