2012-06-18 12 views
10

私はDoctrine 2(Symfony 2用)をLinuxマシンからMSSQLServerに接続しようとしています。Doctrine 2をMSSQLに接続するSYMFONY 2 Linuxで

私はpdo_dblib(FreeTDS/Sybase DB-lib用のPDOドライバ)をインストールしており、コマンドラインとphp cliからもtsql経由でdbサーバに接続できます。私はこれが働いていることを知っています。

Symfony/app/config/parameters.iniファイルでデータベースドライバとしてdatabase_driver = "pdo_sqlsrv"を指定しました(これはdb_libによって処理されますが、create databaseコマンドを実行しようとすると)コマンドを使用して、私はエラーを取得しています:

Could not create database for connection named could not find driver

私はその後、database_driver="pdo_dblib"にドライバーを変更し、私は今のエラーを取得しています:

[Doctrine\DBAL\DBALException]
The given 'driver' pdo_dblib is unknown, Doctrine currently supports only the following drivers: pdo_mysql, pdo_sqlite, pdo_pgsql, pdo_oci, oci8, ibm_db2, pdo_ibm, pdo_sqlsrv

だから、私の唯一のMSSQLに接続するようですオプションは0ですなので、私はこれをインストールしました。しかし、I have just discovered here

The PDO_SQLSRV extension is only compatible with PHP running on Windows.

それはこのように教義とLinux上で使用するために利用できるそれらでサポートされているドライバは、相互にEXLUSIVEように見えます。検索から私はこの問題のインスタンスがこれまでに解決されていることを見つけられませんでした(問題を解決した人が1人でしたが、スレッドを読むとdev envをウィンドウボックスに移動しました...念頭に置いて!)。

+0

ここで見てください:http://stackoverflow.com/questions/8492941/doctrine-2-how-to-add-custom-dbal-driverそして、受け入れられなかった答えがあなたを助けたならばメッセージを残してください。 – hakre

+0

こんにちはHakre、お返事ありがとうございます。 私はあなたの投稿を読んで、あなたが何を記述しているのか理解していますが、どこからこのクラスを取得しましたか? driver_class:Doctrine \ DBAL \ Driver \ MsSql \ Driver 手動で別の場所にコピーする必要がありましたか?前述のように、私はpdo_dblibを使用しています。 Rob Ganly –

答えて

8

Linux(少なくともDebianベースのディストリビューション)の下では、PHPにはSybaseとMSSqlをサポートするパッケージphp5-sybaseが必要です。あなたは、debianベースのディストリビューションを使用している場合

あなたは

$ sudo apt-get install php5-sybase 
$ sudo service apache2 restart 

そして

php -r "phpinfo();" | grep "PDO drivers" 

PDO drivers: dblib, mysql, sqlite, ...

dblib

は、実際に私たちが

が必要ですあなたを与えるべきでやることになるでしょう

Doctrineでこのドライバを使用できるようになるには、この投稿を Doctrine 2 - How to add custom DBAL driver?と答えてください。

オペレータは、この問題を解決するためにこのbundle on gitを使用することを提案します。

+0

ありがとうPierre、カスタムDBALドライバーを追加したときに述べたポストを見つけました。私はその郵便で言及されたエラー、すなわち「与えられた 'ドライバ' pdo_dblibは不明です」を得る段階にもなった。doctrine2で 'out of the box'がサポートされていなかったのを見て、この変更を加えればさらに問題が生じるかどうかは確信していたので、プロジェクトにMSSQLを使用する必要はないと判断しました。代わりにMySQLを使用しましたが、これは問題ありません。それは他の人々が解決策を持っているように思われるので、私はあなたの答えを受け入れるでしょう。再度、感謝します! Rob Ganly –

+0

MySQLやPostgreを使うのは良い考えです。実際には、外部データを読み取るための代替コネクタとしてMSSQLを使用しなければなりませんでした。 –

+0

はい、PHPとDoctrine 2/Symfony 2でMySqlを使用する方が意味がありますが、これはプロジェクトの開始前に理解され、検討されています。しかし、ここでは、開発環境と本番環境の現状に反することを意味するので、私はMSSQLルートを推論することにしました。しかし、これらの問題が明らかになったとき、測定された見解が採択され、このルートは放棄されました。これは開発者の人生です!今でもMySQLにはうってつけ!あなたのご意見ありがとうございます。 :) Rob Ganly –

関連する問題