Goal
我们的目标是将wordpress站点从DreamHost迁移到Azure wordpress资源。
Process and Errors
我们安装了UpdraftPlus (pro版本)在两个版本上。我们利用了它Send a backup to another site->Recieve a backup from a remote site功能。在数据库还原过程中,它失败并出现以下错误wp_options table does not exists...
.
我们最终从下载了数据库备份文件UpdraftPlus. 顶部部分如下所示:
# WordPress MySQL database backup
# Created by UpdraftPlus version 2.16.27.24 (https://updraftplus.com)
# WordPress Version: 5.5, running on PHP 7.4.2 (Apache), MySQL 5.7.28-log
# Backup of: http://example.com
# Home URL: http://example.com
# Content URL: http://example.com/wp-content
# Uploads URL: http://example.com/wp-content/uploads
# Table prefix: wp_
# Filtered table prefix: wp_
# Site info: multisite=0
# Site info: end
# Generated: Tuesday 25. August 2020 19:52 UTC
# Hostname: mysql.example.com
# Database: `mydatabasename_com`
# --------------------------------------------------------
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
/*!40101 SET foreign_key_checks = 0 */;
# Table: `wp_options`
# Approximate rows expected in table: 551
# Delete any existing table `wp_options`
DROP TABLE IF EXISTS `wp_options`;
# Table structure of table `wp_options`
CREATE TABLE `wp_options` (
`option_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`option_name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT \'\',
`option_value` longtext COLLATE utf8mb4_unicode_ci NOT NULL,
`autoload` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT \'yes\',
PRIMARY KEY (`option_id`),
UNIQUE KEY `option_name` (`option_name`),
KEY `autoload` (`autoload`)
) ENGINE=MyISAM AUTO_INCREMENT=595049 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
# Data contents of table `wp_options`
INSERT INTO `wp_options` VALUES
(1, \'siteurl\', \'http://example.com\', \'yes\'),
(2, \'home\', \'http://example.com\', \'yes\'),
(3, \'blogname\', \'My Blog Name\', \'yes\'),
...
我们用了剧本
Workbench 查询Azure MySQL数据库。不幸的是,它出现了相同的错误:
wp_options table does not exists...
.
备份查询脚本中的第一个命令是删除当前wp_options
表(如果存在)。以下命令是一个create查询,用于重新创建wp_options
桌子此命令自动失败。下一个命令,将值插入wp_options
表,是导致所示错误的表。没有wp_options
要插入到的表。
Summary and Question
当前MySQL创建查询失败并导致错误。如何成功传输数据库?
SO网友:Ryan
我们通过下载了一个数据库备份UpdraftPlus 来自Azure Wordpress。问题变得很清楚。查看创建查询的存储引擎和排序规则:
CREATE TABLE `wp_options` (
`option_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`option_name` varchar(191) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT \'\',
`option_value` longtext COLLATE utf8mb4_unicode_520_ci NOT NULL,
`autoload` varchar(20) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT \'yes\',
PRIMARY KEY (`option_id`),
UNIQUE KEY `option_name` (`option_name`),
KEY `autoload` (`autoload`)
) /*!50100 TABLESPACE `innodb_system` */ ENGINE=InnoDB AUTO_INCREMENT=214 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
在DreamHost上,我们编辑了每个数据库表,使其具有与Azure MySQL数据库表相同的存储引擎和排序规则。我们刚刚打开了好的旧phpMyAdmin,并通过表选项调整了每个表,如下所示:
要清楚的是,情况正在发生变化:
Storage Engine:
MyISAM
-&燃气轮机;
InnoDB
Collation:
utf8mb4_unicode_ci
-&燃气轮机;
utf8mb4_unicode_520_ci
然后,我们直接从phpMyAdmin获取一个数据库导出,并通过Workbench. 维奥拉!整个数据库传输成功。
Actual Problem
我不知道为什么一开始这不起作用,但是。。。我猜测Azure MySQL数据库位于Windows环境中,而DreamHost MySQL数据库位于Linux环境中。因此,可能有一些数据库配置不一致。