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.
3 réponses
C'est ce que j'ai fait pour connecter mon application Laravel à MS SQL Server:
Sudo apt-obtenir la mise à jour
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.
- 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
- 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
- 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
Maintenant redémarrer votre serveur (nginx, apache ou php-fpm)
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
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