Я пытаюсь мигрировать Drupal в WordPress, и у меня есть проблема с миграцией пользователей и правами на публикацию.Как выполнить этот запрос обновления?
Подробнее.
В моей установке WordPress я перемещаю свои сообщения из Drupal. Среди перенесенных полей также есть идентификатор узла. Итак, теперь мои сообщения в WordPress имеют те же идентификаторы, что и в таблице узлов Drupal.
Также я переношу своих пользователей, но моя текущая проблема заключается в том, как назначить соответствующего пользователя соответствующему сообщению в WordPress.
Для миграции я имею следовать this учебник, который в каком-то месте есть этот код:
# Reassign post authorship.
UPDATE
wordpress.wp_posts
SET
post_author = NULL
WHERE
post_author
NOT IN
(
SELECT
DISTINCT ID
FROM
wordpress.wp_users
);
Unfortunatelly это не работает для меня, потому что я получаю это предупреждение:
64 warning(s): 1048 Column 'post_author' cannot be null
Так , я должен был написать следующий запрос для получения любой требуемой информации:
SELECT
DISTINCT(n.nid) AS `PostID`,
n.uid AS `AuthorID`,
wu.ID AS `WPUserID`
FROM
drupal.node n
LEFT JOIN
drupal.users u
ON
n.uid = u.uid
LEFT JOIN
wp_users wu
ON
wu.user_login = u.name
WHERE
wu.ID > 1
Вышеуказанный запрос может вернуть мне идентификатор сообщения (что относится к Drupal one) и идентификатор пользователя WordPress, так как пользователь в WordPress имеет новый идентификатор.
Итак, вопрос в том, как я могу смешивать этот запрос с запросом UPDATE выше, чтобы установить соответствующего пользователя в соответствующий пост?
Просто за помощью
Это Drupal Пользователи Таблица Подпись:
CREATE TABLE `users` (
`uid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(60) NOT NULL DEFAULT '''',
`pass` varchar(32) NOT NULL DEFAULT '''',
`mail` varchar(64) DEFAULT '''',
`mode` tinyint(4) NOT NULL DEFAULT ''0'',
`sort` tinyint(4) DEFAULT ''0'',
`threshold` tinyint(4) DEFAULT ''0'',
`theme` varchar(255) NOT NULL DEFAULT '''',
`signature` varchar(255) NOT NULL DEFAULT '''',
`signature_format` smallint(6) NOT NULL DEFAULT ''0'',
`created` int(11) NOT NULL DEFAULT ''0'',
`access` int(11) NOT NULL DEFAULT ''0'',
`login` int(11) NOT NULL DEFAULT ''0'',
`status` tinyint(4) NOT NULL DEFAULT ''0'',
`timezone` varchar(8) DEFAULT NULL,
`language` varchar(12) NOT NULL DEFAULT '''',
`picture` varchar(255) NOT NULL DEFAULT '''',
`init` varchar(64) DEFAULT '''',
`data` longtext,
`timezone_name` varchar(50) NOT NULL DEFAULT '''',
PRIMARY KEY (`uid`),
UNIQUE KEY `name` (`name`),
KEY `access` (`access`),
KEY `created` (`created`),
KEY `mail` (`mail`)
) ENGINE=MyISAM AUTO_INCREMENT=397 DEFAULT CHARSET=utf8
Это является Drupal узлов таблицы подписи:
CREATE TABLE `node` (
`nid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`vid` int(10) unsigned NOT NULL DEFAULT ''0'',
`type` varchar(32) NOT NULL DEFAULT '''',
`language` varchar(12) NOT NULL DEFAULT '''',
`title` varchar(255) NOT NULL DEFAULT '''',
`uid` int(11) NOT NULL DEFAULT ''0'',
`status` int(11) NOT NULL DEFAULT ''1'',
`created` int(11) NOT NULL DEFAULT ''0'',
`changed` int(11) NOT NULL DEFAULT ''0'',
`comment` int(11) NOT NULL DEFAULT ''0'',
`promote` int(11) NOT NULL DEFAULT ''0'',
`moderate` int(11) NOT NULL DEFAULT ''0'',
`sticky` int(11) NOT NULL DEFAULT ''0'',
`tnid` int(10) unsigned NOT NULL DEFAULT ''0'',
`translate` int(11) NOT NULL DEFAULT ''0'',
PRIMARY KEY (`nid`),
UNIQUE KEY `vid` (`vid`),
KEY `node_changed` (`changed`),
KEY `node_created` (`created`),
KEY `node_moderate` (`moderate`),
KEY `node_promote_status` (`promote`,`status`),
KEY `node_status_type` (`status`,`type`,`nid`),
KEY `node_title_type` (`title`,`type`(4)),
KEY `node_type` (`type`(4)),
KEY `uid` (`uid`),
KEY `tnid` (`tnid`),
KEY `translate` (`translate`)
) ENGINE=MyISAM AUTO_INCREMENT=247 DEFAULT CHARSET=utf8
Это WordPress wp_posts таблица сигнатур :
CREATE TABLE `wp_posts` (
`ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`post_author` bigint(20) unsigned NOT NULL DEFAULT ''0'',
`post_date` datetime NOT NULL DEFAULT ''0000-00-00 00:00:00'',
`post_date_gmt` datetime NOT NULL DEFAULT ''0000-00-00 00:00:00'',
`post_content` longtext NOT NULL,
`post_title` text NOT NULL,
`post_excerpt` text NOT NULL,
`post_status` varchar(20) NOT NULL DEFAULT ''publish'',
`comment_status` varchar(20) NOT NULL DEFAULT ''open'',
`ping_status` varchar(20) NOT NULL DEFAULT ''open'',
`post_password` varchar(20) NOT NULL DEFAULT '''',
`post_name` varchar(200) NOT NULL DEFAULT '''',
`to_ping` text NOT NULL,
`pinged` text NOT NULL,
`post_modified` datetime NOT NULL DEFAULT ''0000-00-00 00:00:00'',
`post_modified_gmt` datetime NOT NULL DEFAULT ''0000-00-00 00:00:00'',
`post_content_filtered` longtext NOT NULL,
`post_parent` bigint(20) unsigned NOT NULL DEFAULT ''0'',
`guid` varchar(255) NOT NULL DEFAULT '''',
`menu_order` int(11) NOT NULL DEFAULT ''0'',
`post_type` varchar(20) NOT NULL DEFAULT ''post'',
`post_mime_type` varchar(100) NOT NULL DEFAULT '''',
`comment_count` bigint(20) NOT NULL DEFAULT ''0'',
PRIMARY KEY (`ID`),
KEY `post_name` (`post_name`),
KEY `type_status_date` (`post_type`,`post_status`,`post_date`,`ID`),
KEY `post_parent` (`post_parent`),
KEY `post_author` (`post_author`)
) ENGINE=InnoDB AUTO_INCREMENT=247 DEFAULT CHARSET=utf8
И, наконец, это таблица WordPress пользователей подписи:
CREATE TABLE `wp_users` (
`ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`user_login` varchar(60) NOT NULL DEFAULT '''',
`user_pass` varchar(64) NOT NULL DEFAULT '''',
`user_nicename` varchar(50) NOT NULL DEFAULT '''',
`user_email` varchar(100) NOT NULL DEFAULT '''',
`user_url` varchar(100) NOT NULL DEFAULT '''',
`user_registered` datetime NOT NULL DEFAULT ''0000-00-00 00:00:00'',
`user_activation_key` varchar(60) NOT NULL DEFAULT '''',
`user_status` int(11) NOT NULL DEFAULT ''0'',
`display_name` varchar(250) NOT NULL DEFAULT '''',
PRIMARY KEY (`ID`),
KEY `user_login_key` (`user_login`),
KEY `user_nicename` (`user_nicename`)
) ENGINE=InnoDB AUTO_INCREMENT=652 DEFAULT CHARSET=utf8
UPDATE wordpress.wp_posts SET post_author = 0 ГДЕ post_author НЕ В ( ВЫБОР DISTINCT ID ОТ wordpress.wp_users ); – Hackerman
Это не назначает никому пользователей сообщений. Мне нужно назначить автора для каждого сообщения.Это хорошо для одного пользователя, но я не буду точным. –