你好,我是一名有抱负的计算机科学家。我已经尝试在线上传我的localhost网站近一天了。这是我到目前为止所做的:
我在线创建了一个DB(来自我的在线托管帐户。),创建了用户和密码。我在本地主机上访问了我的PHPmyAdmin,选择了我的数据库,导出了它(一个.sql文件),编辑了URL(查找和替换)。我上网了,到我的DB(在线)并选择导入数据库。我选择了导出的DB文件(localhost),然后单击Go。我收到以下错误消息:
它告诉我:
1064 - 您的SQL语法出错;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 靠近' CREATE TABLE [IF NOT EXISTS]
wp_commentmeta
(meta_id
bigint(20)u'在第1行
CREATE TABLE IF NOT EXISTS `wp_commentmeta` (
`meta_id` BIGINT( 20 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
`comment_id` BIGINT( 20 ) UNSIGNED NOT NULL DEFAULT '0',
`meta_key` VARCHAR( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
`meta_value` LONGTEXT COLLATE utf8mb4_unicode_ci,
PRIMARY KEY ( `meta_id` ) ,
KEY `comment_id` ( `comment_id` ) ,
KEY `meta_key` ( `meta_key` ( 191 ) )
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci AUTO_INCREMENT =6;
希望这会改善我的问题吗?
我非常感谢此平台上的每个贡献者之前所做的工作。有人在Stack Overflow,我知道我的问题的本质,但我还没有找到直接适用于它的解决方案。我无法弄清楚代码不对的地方。我需要快速解决方案,即使从昨天开始人们必须在网站(WP网站)上注册。 谢谢大家。
答案 0 :(得分:2)
您(仍然)收到该错误的唯一方法是因为您最有可能通过PHP脚本使用您的代码,而不是执行它/在phpmyadmin中插入这些代码。
由于你标记为PHP,这是我能想出的唯一结论,因为在phpmyadmin中使用你的代码,确实成功创建了它。
正如我在评论中所说的那样,当然减去括号。
删除此处[ IF NOT EXISTS ]
中的括号。
您必须从他们的网站上逐字地获取MySQL示例并使用它们。
这些并不意味着使用,而是作为一种选择。
另外,如果从PHP脚本执行,它可能是引号问题并使用错误的。
如果您正在尝试或想通过PHP脚本创建表,那么这样做的一个示例是:
$sql = "CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP
)";
if ($conn->query($sql) === TRUE) {
echo "Table MyGuests created successfully";
} else {
echo "Error creating table: " . $conn->error;
}
然而,phpmyadmin确实有一个“IMPORT”选项。
成功导入数据库后,您应该会在页面顶部看到一条消息,类似于:导入已成功完成,##查询已执行。
另见:
谈论WordPress。
和
另一个可能的原因可能是某些类型的unicode(隐藏)字符被引入,和/或文件编码问题。
TBH;在这个时间点,我没有想法。
修改强>
作为一个选项,如果它仍然给你带来问题,你可以使用以下内容作为PHP脚本运行:
旁注:这是经过预先测试的。用您自己的登录凭据替换xxx
。
<?php
$DB_HOST = 'xxx';
$DB_USER = 'xxx';
$DB_PASS = 'xxx';
$DB_NAME = 'xxx';
$Link = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
if($Link->connect_errno > 0) {
die('Connection failed [' . $Link->connect_error . ']');
}
$sql = "CREATE TABLE `wp_commentmeta` (
`meta_id` BIGINT( 20 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
`comment_id` BIGINT( 20 ) UNSIGNED NOT NULL DEFAULT '0',
`meta_key` VARCHAR( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
`meta_value` LONGTEXT COLLATE utf8mb4_unicode_ci,
PRIMARY KEY ( `meta_id` ) ,
KEY `comment_id` ( `comment_id` ) ,
KEY `meta_key` ( `meta_key` ( 191 ) )
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci AUTO_INCREMENT = 6
";
if ($Link->query($sql) === TRUE) {
echo "Table created successfully";
} else {
echo "Error creating table: " . $Link->error;
}
重要提示:复制此确切代码并将其粘贴到phpmyadmin的“SQL”选项中,不“IMPORT”。
CREATE TABLE IF NOT EXISTS `wp_commentmeta` (
`meta_id` BIGINT( 20 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
`comment_id` BIGINT( 20 ) UNSIGNED NOT NULL DEFAULT '0',
`meta_key` VARCHAR( 255 ) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
`meta_value` LONGTEXT COLLATE utf8mb4_unicode_ci,
PRIMARY KEY ( `meta_id` ) ,
KEY `comment_id` ( `comment_id` ) ,
KEY `meta_key` ( `meta_key` ( 191 ) )
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci AUTO_INCREMENT =6;
然后点击“开始”。这就是我最初在phpmyadmin中测试你的代码的方式。
答案 1 :(得分:0)
你确定你的MySQL版本是'4.1.14'吗?它真的很老了。
如果是,问题是mySQL版本。
MySQL v。5.5.3(2010年初发布)中引入了utf8mb4编码。
另请注意 official wordpress docs说:
utf8mb4升级
在WordPress 4.2中,我们可以将表升级到utf8mb4。只有满足以下条件时,您的网站才会升级:
- 您目前正在使用utf8字符集。
- 您的MySQL服务器是5.5.3或更高版本(包括MariaDB的所有10.x版本)。
- 您的MySQL客户端库是5.5.3或更高版本。如果您使用的是mysqlnd,5.0.9或更高版本。
此外,在文档中明确引用wp_commentmeta
表。
在我们的查询中:
也许升级mySQL可以解决你的问题。
答案 2 :(得分:0)
当我联系我的主持人时,他们帮我解决了这个问题。我收到了这条消息:
我可以在文件'dbxxx.sql'中看到命令'Use dbxx;'缺少,这就是原因,当您尝试将SQL文件导入数据库时,您收到了该错误。
我的网站现已启动并正在运行。
答案 3 :(得分:0)
将数据库上传到服务器时遇到了同样的问题。
错误 SQL查询:
#
# Table structure of table `wp_commentmeta`
#
CREATE TABLE `wp_commentmeta` (
`meta_id` BIGINT( 20 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
`comment_id` BIGINT( 20 ) UNSIGNED NOT NULL DEFAULT '0',
`meta_key` VARCHAR( 255 ) COLLATE utf8_unicode_520_ci DEFAULT NULL ,
`meta_value` LONGTEXT COLLATE utf8_unicode_520_ci,
PRIMARY KEY ( `meta_id` ) ,
KEY `comment_id` ( `comment_id` ) ,
KEY `meta_key` ( `meta_key` ( 191 ) )
) ENGINE = INNODB DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_520_ci;
我只需将所有utf8_unicode_520_ci
替换为数据库中的utf8_unicode_ci
。然后我就可以上传数据库了。这适合我。
您可以尝试在数据库中使用utf8替换所有utf8mb4_unicode_ci
utf8_unicode_ci
和utf8mb4
。希望这对你有用。