Comment utiliser la connexion SQL Server dans Laravel?

J'ai un projet de travail fait dans Laravel 3 que je dois passer au serveur MsSQL (pas mon appel cependant, sniff...) et je ne comprends pas la configuration de Laravel sur ce type de base de données...

J'ai changé la valeur par défaut à l'intérieur de database.php à ceci 'default' => 'sqlsrv' puis j'ai configuré l'hôte, La base de données, le nom d'utilisateur, le mot de passe dans le tableau sqlsrv mais ensuite j'obtiens ce message d'erreur:

Cette extension nécessite le pilote ODBC Microsoft SQL Server 2012 Native Client pour communiquer avec SQL Serveur '

Après quelques recherches, j'ai trouvé que nous avions besoin de PDO de SQLSRV, que j'ai déjà en version 5.4 et dans mon phpinfo je reçois ceci retourné pdo_sqlsrv support : enabled donc tout semble correct mais en même temps il semble demander des connexions ODBC SQLSRV, dois-je vraiment l'utiliser?

Je préfère me connecter directement à partir de la connexion à la base de données Laravel... mais même si j'en ai besoin et que j'ai créé une connexion ODBC au serveur, comment les mettre dans ma configuration? Voici ce que j'ai avoir dans ma configuration (bien sûr le my... est remplacé par mes vrais détails):

'sqlsrv' => array(
    'driver'   => 'sqlsrv',
    'host'     => 'myServerIP', 
    'database' => 'myDatabase',
    'username' => 'myUsername',
    'password' => 'myPassword',
    'prefix'   => '',
 ),

Toute aide serait grandement appréciée, la seule chose que j'ai trouvée proche de mon problème était ce lien du Forum Laravel: Laravel query sur SQL Server mais ensuite il s'arrête sans donner de configurations.

21
demandé sur Jeff Puckett 2013-08-13 20:01:28

3 réponses

C'est ce que j'ai fait pour connecter mon application Laravel à MS SQL Server:

  1. Sudo apt-obtenir la mise à jour

  2. Sudo apt-get install php5-sybase

Si vous essayez d'installer php5-mssql, il installera php5-sybase de toute façon, c'est"Sybase / MS SQL Server module for php5".

Cela fera que Laravel utilisera le pilote DBLIB au lieu de sqlsrv.

Consultez ce fichier pour référence Illuminez\Database \ Connectors \ SqlServerConnector.php.

  1. ouvrir ce fichier: /etc/freetds/freetds.conf

Sous [global] section et sous tds version = 4.2

Ajouter tds version = 8.0 (sans ; demi-colonne au début de la ligne)

Et ajouter client charset = UTF-8, juste sous la ligne ci-dessus (sans ; demi-colonne au début de la ligne)

Cela permet au pilote d'encoder toutes les données en utf-8 et d'éviter les caractères étranges dans les données

Le fichier ressemblera à ceci:

[global]

        # TDS protocol version

;       tds version = 4.2

        tds version = 8.0

        client charset = UTF-8
  1. créer un fichier paramètres régionaux.conf dans ce répertoire /etc/freetds et passé le suivant à l'intérieur:     (cela permet une analyse correcte des dates avec SQL Server).

[default]

    date format = %Y-%m-%d %I:%M:%S.%z

[en_US]

    date format = %b %e %Y %I:%M:%S:%z%p

    language = us_english

    charset = iso_1

  1. modifier le php.ini fichier

Trouvez D'abord le fichier avec php-i / grep php.ini

Ensuite, ouvrez le fichier et recherchez mssql.charset (ce sera probablement comme désactivé comme ceci ; mssql.charset = "ISO-8859-1" )

Faites-le mssql.charset = "UTF-8" >

Enregistrer et quitter

  1. Maintenant redémarrer votre serveur (nginx, apache ou php-fpm)

  2. Bien sûr, vous savez que vous devez définir la base de données config pour utiliser sqlsrv par défaut 'default' => 'sqlsrv', et ajouter vos informations d'identification.


AUTRES MÉTHODES:

Vous pouvez utiliser le pilote ODBC pour vous connecter

Voici un joli paquet https://github.com/ccovey/odbc-driver

16
répondu Mahmoud Zalt 2017-12-06 23:01:57

Ahh après beaucoup plus de recherches, j'ai découvert que mon pilote de SQL Server Native Client 10.0 était obsolète et ne suffisait pas à se connecter à un MsSQL Server 2008 avec PDO, vous devez avoir au moins la version 11.0 pour vous connecter à un SQL Server 2005 +

Si vous souhaitez valider la version de votre pilote, vous pouvez passer par Control Panel >> Administrative Tools >> Data Sources (ODBC), puis cliquez sur le Drivers onglet pour savoir qui SQL Server Native Client vous avez déjà installé. Si vous souhaitez mettre à jour votre pilote, en fonction de la configuration de votre système d'exploitation, vous pouvez choisir le lien approprié dessous...

SQL Server 2012 Client natif
x86 (32 bits) paquet http://go.microsoft.com/fwlink/?LinkID=239647&clcid=0x409
paquet x64 (64 bits) http://go.microsoft.com/fwlink/?LinkID=239648&clcid=0x409

11
répondu ghiscoding 2013-08-14 01:36:43

Pour Linux, Laravel 5 et php 7.1:

  1. Ajouter une connexion comme dit ici
  2. sudo apt install php7.1-sybase
  3. réessayez:)
0
répondu insign 2017-05-03 17:21:56