2012-06-18 4 views
10

Doctrine 2 (Symfony 2 용)를 사용하여 Linux 컴퓨터에서 MSSQLServer에 연결하려고합니다.Doctrine 2를 MSSQL for SYMFONY 2에 연결 Linux에서

pdo_dblib (FreeTDS/Sybase DB-lib 용 PDO 드라이버)를 설치했으며 명령 줄에서 tsql을 통해 db 서버에 연결할 수 있으며 php cli에서도 연결할 수 있습니다. 따라서 나는 이것이 작동하고 있음을 안다. (나는이 db_lib에 의해 처리 될 수 있음을 읽으면서) 내 심포니/응용 프로그램/설정/parameters.ini 파일에서

나는 데이터베이스 드라이버로 = "pdo_sqlsrv을"database_driver 지정했지만 실행하려고 할 때 (데이터베이스 명령을 작성

Could not create database for connection named could not find driver

내가 다음 database_driver="pdo_dblib"에 드라이버를 변경하고 지금은 오류가 점점 오전 : 명령 php app/console doctrine:database:create)를 사용하여 내가 오류를 얻고있다

[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.

따라서 교리와 리눅스에서 사용하기 사용할 수있는 지원 드라이버는 상호 배타 것 같다. 검색에서 나는이 문제의 어떤 경우도 해결되지 않았 음을 발견했습니다 (한 사람이 문제를 해결 된 것으로 표시했으나 스레드를 읽을 때 간단히 그의 dev env를 Windows 상자로 옮겼습니다 ... 정확히 내가 갖고 있지 않은 것 마음에!).

+0

여기를 참고하십시오 : http://stackoverflow.com/questions/8492941/doctrine-2-how-to-add-custom-dbal-driver 그리고 받아 들일 수없는 대답이 도움이 되었다면 메시지를 남겨주세요. – hakre

+0

안녕하세요, 귀하의 회신에 감사드립니다. 나는 귀하의 게시물을 읽었으며 귀하가 무엇을 설명하고 있는지 이해하고 있지만이 수업은 어디에서 가져 왔습니까? driver_class : Doctrine \ DBAL \ Driver \ MsSql \ Driver 수동으로 어딘가에서 복사해야합니까? 언급 한 바와 같이, 나는 pdo_dblib을 사용하고있다. Rob Ganly –

답변

8

리눅스 (적어도 데비안 기반 배포판)에서는 php가 Sybase와 MSSql을 지원하는 패키지 php5-sybase을 필요로합니다. 당신이 데비안 기반의 배포판을 사용하는 경우

당신은

$ 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?으로 대답하여 답변을 찾도록하십시오.

OP가 함께 작동하게 만드는이 bundle on git을 사용하는 것이 좋습니다.

+0

감사합니다. Pierre, 사용자 DBAL 드라이버 추가시 언급 한 게시물을 발견했습니다. 나는 또한 해당 게시물에 언급 된 오류가 발생하는 단계에 도달했습니다. 즉, "주어진 '드라이버'pdo_dblib은 알 수 없습니다. 'doctrine2에서 'out of the box'를 지원하지 않는 것을 보았습니다 .2이 수정을 수행하면 문제가 더 심해지므로 프로젝트에 MSSQL을 사용할 필요가 없다고 결정되었습니다. 나는 대신 MySQL을 사용했는데 이것은 문제가없는 것으로 판명되었습니다. 그 해결책을 다른 사람들이 가지고있는 것 같아서 당신의 대답을 받아 들일 것입니다. 다시 한 번 감사드립니다! Rob Ganly –

+0

MySQL 또는 Postgre를 사용하는 것이 좋습니다. 사실 외부 데이터를 읽으려면 대체 커넥터로 MSSQL을 사용해야했습니다. –

+0

네, 물론 PHP와 Doctrine 2/Symfony 2에서 MySql을 사용하는 것이 더 합리적입니다. 이것은 프로젝트를 시작하기 전에 이해되고 고려되었습니다. 그러나 여기서는 개발 및 프로덕션 환경의 현상 유지에 반대하는 의미에서 MSSQL 경로를 추론하기로 결정했습니다. 그러나 이러한 문제가 분명 해지면 측정 된 견해가 취해지고이 길은 포기됩니다. 그러한 것은 개발자의 삶입니다! 지금도 MySQL과 함께 훌륭하게 작동합니다! 귀하의 의견을 보내 주셔서 감사합니다. :) Rob Ganly –