用户
 找回密码
 入住 CI 中国社区
搜索
查看: 6840|回复: 5
收起左侧

[HELP] 多个数据库之间表关联的问题

[复制链接]
发表于 2009-9-17 19:57:40 | 显示全部楼层 |阅读模式
实际开发过程中,我用到了两个 sql server 2008 的数据库,分别在ci里进行了配置。
当我单独调用两个连接查询各自库中的表时,一切顺利。

但我现在要将两个库中的一些表进行关联查询,就会报错(A Database Error Occurred)

我实际是这样应用的,我用A库的链接执行了一条查询语句
select * from table1 a
left join [192.168.145.1].[dbname].[dbo].table2 b on a.id = b.id

事先我已经在A库上设置了B库为A库的连接服务器对象,并且这条语句在A库查询分析器里也是可以执行的,这就说明sqlserver支持这样的关联。为了再次验证,我把同样的情况用asp实现了一遍,asp中可以执行我的语句。

让我郁闷的是为什么在ci里就不允许,是我还需要什么特殊设置么?
请高手给我指点一下,谢谢。
发表于 2009-9-17 20:56:22 | 显示全部楼层
楼主试试在php里面直接执行sql,看提示什么错误
 楼主| 发表于 2009-9-17 22:03:06 | 显示全部楼层
2# visvoy

感谢版主的提醒,按照你说的,在php里直接执行,发现报错。如下:

Warning: mssql_query() [function.mssql-query]: message: Heterogeneous queries require the ANSI_NULLS and ANSI_WARNINGS options to be set for the connection. This ensures consistent query semantics. Enable these options and then reissue your query. (severity 16)

突然我想起可能是由于数据库编码不一致引起的,于是我找到两个编码一致的数据库,继续测试,发现不再出错.所以我想php使用mssql库,连接sql server数据库应该是支持我的这种应用,只是在编码格式不同的数据库中会出现错误。

这样就排除了ci本身的问题。但是我又郁闷了,为什么在程序里行不通,但语句放到查询分析器里就没有问题。是mssql驱动不支持么?难道要换驱动,如果换ODBC连接sql server数据库ci支持么?

ps:我是ci新手,问题有点多,不好意思了。
 楼主| 发表于 2009-9-17 22:14:55 | 显示全部楼层
2# visvoy

哦,忘记补充了,我测试了用ODBC链接数据库,发现即便是不同编码之间的数据库也可以实现我的应用。

这样问题基本确定在mssql库对我的这种应用支持的不好。
发表于 2009-9-17 23:19:00 | 显示全部楼层
微软针对sql server2005/2008 in php开发了专用dll,试试那个吧,google有
发表于 2009-9-17 23:20:28 | 显示全部楼层
名字叫 SQLServerDriverForPHP

本版积分规则