我在我的开发机器WinXPsp3上编写了代码,它具有apache独立版本2.2.21。查询工作正常。2个相同安装的apache/php从同一个SQL Server数据库返回不同的结果
然后,我复制了我的生产机器WinXPsp3上的PHP,其中有Apache 2.2窗口安装与PHP 5.3.5 Windows安装,并且是SQL Server计算机,但查询崩溃。
我卸载了生产机器上的apache和php,并从开发机器上复制了我的独立版本,但是当我启动apache时,出现MSCPV100.dll丢失的错误。 我安装了MS C++ Redist,并且该问题消失了。
查询如下:
SELECT TOP (50) [ID], (SELECT Case WHEN [Location] is null then 'Unknown' WHEN [Location]='' THEN 'Unknown' ELSE UPPER([Location]) END + ', ' as [text()] FROM dbo.[OtherTable] WHERE [OtherTable].[Key]=[Table].[ID] FOR XML path('')) AS Locations FROM Table
(这里的任何错误格式化不能反映我的实际查询的,因为它适用于其他的Apache安装)
查询被窒息在较低在[text()]之前将“AS关键字附近的语法不正确”的情况设置为'“。
该查询最初是大写字母,并且有更多字段,所以我使用小写字母,直到找到失败说明中提到的“AS”。
我尝试用“''”替换文本()周围的“[]”,但这并没有帮助。
事实我知道是正确的:
的Apache的安装是相同的。
php的安装是相同的。
当通过不同机器上的apache的相同安装
进行托管时,查询可以正常工作。其他查询在生产机器上正常工作后
apache/php升级。
这些信息让我相信生产机器出现了一些错误,而不是apache,sql server,php或查询。任何想法可能是什么?
一对夫妇的事情,我没有提到:
的PHP连接类型是ODBC。
两台机器上的SQL Server ODBC驱动程序都是2000.85.1132.0,但生产机器也具有SQL Server Native Client 10.0版本2007.100.2531.00。