当我看到您的错误消息时,我觉得您运行WordPress的是MS SQL数据库,而不是MySQL数据库。这很好,但从支持的角度来看,这让事情变得有点棘手,因为这两种数据库平台实际上是不同的。
例如,您收到的错误消息表示text
和varchar
数据类型不兼容,但插件尝试运行的SQL语句使用了相等运算符。
基本上meta_key
和meta_value
字段为text
数据类型,但要匹配的值(_wp_old_slug
和sitemap
) 是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
抽象层)。因此,除非你想先雇佣一名开发人员来检查代码,或者只是通过反复试验来了解哪些插件可以工作,否则你通常会运气不佳。