WordPress Sitemap for MSSQL

时间:2010-09-21 作者:Sevki

有没有人知道适合WordPress的MS Sql站点地图插件?

以下是我得到的错误:

Array ( 
    [0] => Array ( 
        [0] => 42000 
        [SQLSTATE] => 42000 
        [1] => 402 
        [code] => 402 
        [2] => [Microsoft][SQL Server Native Client 10.0][SQL Server]The data types text and varchar are incompatible in the equal to operator. 
        [message] => [Microsoft][SQL Server Native Client 10.0][SQL Server]The data types text and varchar are incompatible in the equal to operator. 
    ) 
) 
WordPress database error: [1]
SELECT post_id FROM wp_postmeta, wp_posts WHERE ID = post_id AND meta_key = \'_wp_old_slug\' AND meta_value=\'sitemap\'
我在Google XML Sitemaps插件中遇到此错误。。。。有什么想法吗?

1 个回复
SO网友:EAMann

当我看到您的错误消息时,我觉得您运行WordPress的是MS SQL数据库,而不是MySQL数据库。这很好,但从支持的角度来看,这让事情变得有点棘手,因为这两种数据库平台实际上是不同的。

例如,您收到的错误消息表示textvarchar 数据类型不兼容,但插件尝试运行的SQL语句使用了相等运算符。

基本上meta_keymeta_value 字段为text 数据类型,但要匹配的值(_wp_old_slugsitemap) 是varchar. 不能使用简单的相等运算符来检查它们是否相似。

考虑到这是几乎任何直接访问WP数据库的插件都会面临的问题,我将推荐使用the strongest possible terms 将站点迁移到MySQL设置。MySQL是免费的,如果您已经在服务器上运行PHP,那么您也应该能够运行MySQL。

但是,您可以重写插件中进行数据库调用以将搜索字符串转换为文本的部分:

SELECT post_id FROM wp_postmeta, wp_posts WHERE ID = post_id AND meta_key = CAST(\'_wp_old_slug\' AS text) AND meta_value=CAST(\'sitemap\' AS text)
请注意,动态重铸SQL语句中的变量类型并不是我的强项,在将此解决方案部署到生产环境之前,应该针对开发系统对其进行测试。我不保证

至于将在MS SQL环境中工作的替代插件,我不能提供任何建议。任何插件都有直接与数据库交互的风险(即尝试在数据库上运行查询而不通过$wpdb 抽象层)。因此,除非你想先雇佣一名开发人员来检查代码,或者只是通过反复试验来了解哪些插件可以工作,否则你通常会运气不佳。

结束

相关推荐

How do you debug plugins?

我对插件创作还很陌生,调试也很困难。我用了很多echo,它又脏又丑。我确信有更好的方法可以做到这一点,也许是一个带有调试器的IDE,我可以在其中运行整个站点,包括插件?