headdev / mssql-bundle
MsSQL服务器的工作驱动程序
This package is not auto-updated.
Last update: 2024-09-24 08:38:04 UTC
README
将 isoft/mssql-bundle 添加到 composer.json
"require": {
....
"isoft/mssql-bundle": "master-dev"
},
用法
在 config.yml 的 doctrine - dbal 部分,添加 driver_class 选项
doctrine:
dbal:
driver_class: \Realestate\MssqlBundle\Driver\PDODblib\Driver
host: %database_host%
user: %database_user%
password: %database_password%
# options:
# ansi_nulls: on
# ansi_warnings: on
# ansi_padding: on
# concat_null_yields_null: on
# quoted_identifier: on
%database_driver% 必须不设置,同样 %charset% 参数也不能设置,正如 stackoverflow.com/questions/8492941/doctrine-2-how-to-add-custom-dbal-driver#answer-8731924 中所述
MSSQL 的连接选项(ansi_nulls 和 ansi_warnings)可以配置为 ON|OFF
在 app/AppKernel.php 的 registerBundles() 方法中,添加以下行
$bundles = array(
...
new Realestate\MssqlBundle\RealestateMssqlBundle(),
...
);
此驱动程序需要版本 8.0(来自 http://www.ubuntitis.com/?p=64),因为默认的 4.2 版本没有 UTF 支持
freetds.conf (/etc/freetds/freetds.conf) 的示例
[mssql_server]
host = xxx.xxx.xxx.xxx
port = 1433
tds version = 8.0
client charset = UTF-8
text size = 20971520
不能使用 nvarchar!!
在 SQL 2000 SP4 或更高版本、SQL 2005 或 SQL 2008 中,如果您执行返回 NTEXT 类型数据的查询,可能会遇到以下异常:_mssql.MssqlDatabaseError: SQL Server 信息 4004,严重性 16,状态 1,行 1:在仅 Unicode 的校对或 ntext 数据中不能发送 Unicode 数据到使用 DB-Library(如 ISQL)或 ODBC 3.7 或更早版本的客户
这意味着由于 FTREETDS 的不足,SQL Server 无法将 Unicode 数据发送到 FTREETDS。您必须将数据 CAST 或 CONVERT 为等效的 NVARCHAR 数据类型,该类型不会表现出这种行为。