J'ai un projet de travail réalisé en Laravel 3 que je dois basculer vers MsSQL Server (pas mon appel cependant, sniff ...) et je ne comprends pas le Laravel configuration sur ce type de base de données ...
J'ai changé la valeur par défaut à l'intérieur database.php
pour ça '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 je reçois ce message d'erreur:
Cette extension nécessite le pilote natif Microsoft SQL Server 2012 ODBC Driver pour communiquer avec SQL Server`
Après quelques recherches, j'ai trouvé que nous avons besoin de PDO de SQLSRV, que j'ai déjà comme 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 ODBC connexions 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 puis-je les mettre dans ma configuration? Voici ce que j'ai 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 près de mon problème était ce lien depuis le forum Laravel: requête Laravel sur SQL Server mais il s'arrête juste sans donner de configurations.
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 pas suffisant pour se connecter à un MsSQL Server 2008
Avec PDO, vous devez avoir au moins la version 11.0
Pour se connecter à un serveur SQL Server 2005+
Si vous souhaitez valider la version de votre pilote, vous pouvez passer par Control Panel >> Administrative Tools >> Data Sources (ODBC)
puis cliquer sur l'onglet Drivers
pour savoir quel 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é ci-dessous ...
Client natif SQL Server 2012
Package x86 (32 bits) http://go.Microsoft.com/fwlink/?LinkID=239647&clcid=0x409
Package x64 (64 bits) http://go.Microsoft.com/fwlink/?LinkID=239648&clcid=0x409
C'est ce que j'ai fait pour connecter mon Laravel app à MS SQL Server:
Sudo apt-get update
Sudo apt-get install php5-sybase
si vous essayez d'installer php5-mssql, il installera de toute façon php5-sybase, il s'agit du "module Sybase/MS SQL Server pour php5".
cela obligera Laravel à utiliser le pilote dblib au lieu de sqlsrv.
consultez ce fichier pour référence Illuminate\Database\Connectors\SqlServerConnector.php.
en dessous de [global]
section et sous tds version = 4.2
ajouter tds version = 8.0
(sans; demi-colonne au début de la ligne)
et ajoutez le 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 dans 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
[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
trouver d'abord le fichier avec php -i | grep php.ini
puis ouvrez le fichier et recherchez mssql.charset (ce sera probablement comme désactivé comme ceci ; mssql.charset = "ISO-8859-1" )
make it mssql.charset = "UTF-8" << assurez-vous de supprimer le; semi colonne pour l'activer >>
sauvegarder et quitter
maintenant redémarrez votre serveur (nginx ou Apache ou php-fpm)
bien sûr, vous savez que vous devez définir la configuration de la base de données pour utiliser sqlsrv par défaut 'default' => 'sqlsrv',
et ajoutez vos informations d'identification.
AUTRES MÉTHODES:
vous pouvez utiliser ODBC driver pour vous connecter
voici un joli package https://github.com/ccovey/odbc-driver
Pour Linux, Laravel 5 et php 7.1:
Sudo apt install php7.1-sybase