我正在对 Sybase 数据库使用 Pdo_Mssql 适配器并解决遇到的问题。剩下的一个令人讨厌的问题是 Zend_Db 引用 BIT 字段值的实例。为插入运行以下命令时:
$row = $this->createRow(); ... $row->MyBitField = $data['MyBitField']; ... $行->保存();
FreeTDS 日志输出显示:
dbutil.c:87:msgno 257:“不允许从数据类型 'VARCHAR' 到 'BIT' 的隐式转换。使用 CONVERT 函数运行此查询。
我尝试将值转换为 int 和 bool,但这似乎是表元数据问题,而不是输入的数据类型问题。
幸运的是,Zend_Db_Expr 运行良好。以下工作,但我想成为数据库服务器不可知论者。
$row->MyBitField = new Zend_Db_Expr("CONVERT(BIT, {$data['MyBitField']})");
我已经验证 describeTable() 正在为该字段返回 BIT。关于如何让 ZF 停止引用 MS SQL/Sybase BIT 字段的任何想法?