2

我需要set ARITHABORT ON在 Catalyst 上使用 DBIx::Class。我不确定我可以这样做:

$source->storage->do("set ARITHABORT ON");

我从 MS SQL Server 2008 收到此错误:

SELECT 失败,因为以下 SET 选项的设置不正确:“ARITHABORT”。验证 SET 选项是否适用于索引视图和/或计算列上的索引和/或查询通知和/或 xml 数据类型方法。

在 Catalyst 中设置此类选项的最佳做法是什么?

4

2 回答 2

4

在您的数据库模型中,您可以在connect_info中为包的配置设置on_connect_do属性。

这是一个例子:

__PACKAGE__->config(
    schema_class => 'Your::Schema',
    connect_info => [
        'dbi:ODBC:server=my.host.name;port=1433;driver=FreeTDS;tds_version=8.0',
        'username',
        'password',
        undef,
        { on_connect_do => [ 'SET ARITHABORT ON' ] },
    ]
);
于 2013-01-18T23:11:37.960 回答
0

您发布的错误不是 Catalyst 错误,而是 SQL Server 告诉您需要以某些方式设置某些设置。例如,在查询 XML 时,您需要这个. 因此,从 Catalyst 的角度来看,您所做的一切都是正确的。

于 2013-01-18T23:07:18.680 回答