无法使用WP DB抽象插件创建帖子

时间:2014-07-30 作者:Jorge

我已使用将WordPress网站移动到Azure网站+Azure SQLdatabase abstraction plugin

迁移之后,我无法创建新帖子。当我单击保存草稿时,它会将我重定向到帖子页面,而我的帖子不会保存。错误为:

WordPress database error 22007 : [Microsoft][SQL Server Native Client 11.0][SQL Server]The conversion of a nvarchar data type to a datetime data type resulted in an out-of-range value. 
for query INSERT INTO wp_posts (post_author,post_date,post_date_gmt,post_content,post_content_filtered,post_title,post_excerpt,post_status,post_type,comment_status,ping_status,post_password,post_name,to_ping,pinged,post_modified,post_modified_gmt,post_parent,menu_order,guid) 
VALUES (540, N\'2014-08-01 08:52:44\', N\'0000-00-00 00:00:00\', N\'\', N\'\', N\'Auto Draft\', N\'\', N\'auto-draft\', N\'post\', N\'closed\', N\'closed\', N\'\', N\'\', N\'\', N\'\', N\'2014-08-01 08:52:44\', N\'0000-00-00 00:00:00\',0,0, N\'\') 
made by wp_dashboard, do_meta_boxes, call_user_func, wp_dashboard_quick_press, get_default_post_to_edit, wp_insert_post, pdo_wpdb->query, pdo_wpdb->_post_query, pdo_wpdb->print_error
我已尝试解决staticdeadlockJohnieBraaf explained here, 没有运气:

我很难从“快速草稿”部分创建新帖子,但几分钟后,我意识到它更新了现有帖子。

你们中有谁使用过这个插件,并注意到它在任何特定的WordPress版本中都工作得更好吗?有谁遇到过同样的问题并找到了解决方案?

这是我的wp配置的一部分。php

/** Database Type. Defaults to mysql */
define(\'DB_TYPE\', \'pdo_sqlsrv\');

/** Database Charset to use in creating database tables. */
define(\'DB_CHARSET\', \'utf8\');

/** The Database Collate type. Don\'t change this if in doubt. */
define(\'DB_COLLATE\', \'\');

1 个回复
最合适的回答,由SO网友:Jorge 整理而成

终于明白了,我的问题出在wp include/post上。php,因为从MySQL到SQL的查询翻译错误。

我必须在中替换代码wp_insert_post 具有此代码的函数:

if ( empty($post_date_gmt) || \'0000-00-00 00:00:00\' == $post_date_gmt ) {
        if ( !in_array( $post_status, array( \'draft\', \'pending\', \'auto-draft\' ) ) )
            $post_date_gmt = get_gmt_from_date($post_date);
        else
            //$post_date_gmt = \'0000-00-00 00:00:00\'; changed by  because sql doesn\'t like empty dates
            $post_date_gmt = $post_date;
    }

    if ( $update || \'0000-00-00 00:00:00\' == $post_date ) {
        $post_modified     = current_time( \'mysql\' );
        $post_modified_gmt = current_time( \'mysql\', 1 );
    } else {
        $post_modified     = $post_date;
        //$post_modified_gmt = $post_date_gmt; changed by  because sql doesn\'t like empty dates
        $post_modified_gmt = $post_date;
    }

结束

相关推荐

如何将php、html和SQL代码块添加到$Content后进行变量添加

我正在创建一个插件(我的第一个插件),它允许站点管理员显示过去X天内使用最多的帖子标签。这个插件是WP开发问题的演变-Display list of most used tags in the last 30 days.请原谅我不懂正确的术语。我已经用管理菜单等完成了大部分腿部工作,我唯一剩下的就是实际显示结果。以下代码片段在我将其放入single中时可以正常工作。php文件。<div class=\"recent-popular-tags\"> <h3><?php