Laravel 3で作成された作業プロジェクトがあり、MsSQL Serverに切り替える必要があります(ただし、呼び出しではありません)。このデータベースタイプのLaravel構成がわかりません。 ..
database.php
内のデフォルトをこの'default' => 'sqlsrv'
に変更し、sqlsrv
配列でホスト、データベース、ユーザー名、パスワードを構成しましたが、このエラーメッセージが表示されます。
この拡張機能では、SQL Serverと通信するためにMicrosoft SQL Server 2012ネイティブクライアントODBCドライバーが必要です `
いくつかの調査の後、SQLSRVのPDOが必要であることがわかりました。これは、バージョン5.4として既にあり、phpinfo
でpdo_sqlsrv support : enabled
が返されるので、すべて正しいようですが、同時にODBC SQLSRV接続を要求します。本当に使用する必要がありますか?
Laravelデータベース接続から直接接続したいのですが...それが必要で、サーバーへのODBC接続を作成した場合でも、どのように設定に入れるのですか?ここに私が設定しているものがあります(もちろんmy...
は私の実際の詳細に置き換えられます):
'sqlsrv' => array(
'driver' => 'sqlsrv',
'Host' => 'myServerIP',
'database' => 'myDatabase',
'username' => 'myUsername',
'password' => 'myPassword',
'prefix' => '',
),
私の問題の近くで見つけた唯一のことは、Laravelフォーラムからのこのリンクでした: SQL ServerでのLaravelクエリ それから、設定を与えずに停止します。
ああ、もっと調べてみると、_SQL Server Native Client 10.0
_のドライバーが古く、PDOで_MsSQL Server 2008
_に接続するには不十分であることがわかりました。少なくともバージョン_11.0
_が必要です。 SQL Server 2005+に接続するため
ドライバーのバージョンを検証する場合は、Control Panel >> Administrative Tools >> Data Sources (ODBC)
を実行し、Drivers
タブをクリックして、既にインストール済みの_SQL Server Native Client
_を確認できます。ドライバーを更新する場合は、OS構成に応じて、以下の適切なリンクを選択できます...
SQL Server 2012ネイティブクライアント
x86(32ビット)パッケージ http://go.Microsoft.com/fwlink/?LinkID=239647&clcid=0x409
x64(64ビット)パッケージ http://go.Microsoft.com/fwlink/?LinkID=239648&clcid=0x409
LaravelアプリをMS SQL Serverに接続するために私がやったことです:
Sudo apt-get update
sudo apt-get install php5-sybase
php5-mssqlをインストールしようとすると、とにかくphp5-sybaseがインストールされます。これは「Sybase/MS SQL Server module for php5」です。
これにより、Laravelはsqlsrvの代わりにdblibドライバーを使用します。
このファイルを参照してIlluminate\Database\Connectors\SqlServerConnector.phpを参照してください。
下 [global]
セクションおよびtds version = 4.2
追加 tds version = 8.0
(行の先頭にセミカラムなし)
クライアントを追加charset = UTF-8
上の行のすぐ下=(なし;行の先頭のセミカラム)
これにより、ドライバーはすべてのデータをutf-8にエンコードし、データ内の奇妙な文字を回避します。
ファイルは次のようになります。
[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
最初にphp -i |でファイルを見つけますgrep php.ini
次に、ファイルを開いて、mssql.charsetを検索します(おそらくこのように無効になります; mssql.charset = "ISO-8859-1")
作成しますmssql.charset = "UTF-8"<<<必ず削除してください;有効にするセミカラム>>
保存して終了
今restartサーバー(nginx or Apacheまたはphp-fpm)
もちろん、デフォルトでsqlsrvを使用するようにデータベース構成を設定する必要があることを知っています'default' => 'sqlsrv',
そして資格情報を追加します。
その他の方法:
ODBCドライバを使用して接続できます
こちらが素敵なパッケージです https://github.com/ccovey/odbc-driver
Linuxの場合、Laravel 5およびphp 7.1:
Sudo apt install php7.1-sybase