#1064尝试在线导出本地主机数据库时出现错误消息

时间:2016-02-18 13:18:58

标签: php mysql database wordpress

你好,我是一名有抱负的计算机科学家。我已经尝试在线上传我的localhost网站近一天了。这是我到目前为止所做的:

我在线创建了一个DB(来自我的在线托管帐户。),创建了用户和密码。我在本地主机上访问了我的PHPmyAdmin,选择了我的数据库,导出了它(一个.sql文件),编辑了URL(查找和替换)。我上网了,到我的DB(在线)并选择导入数据库。我选择了导出的DB文件(localhost),然后单击Go。我收到以下错误消息:

它告诉我:

  

1064 - 您的SQL语法出错;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   靠近' CREATE TABLE [IF NOT EXISTS] wp_commentmetameta_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网站)上注册。 谢谢大家。

4 个答案:

答案 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”选项。

  • 点击phpMyAdmin图标
  • 打开phpMyAdmin
  • 在左侧菜单中选择您将使用的数据库
  • 点击顶部菜单中的导入
  • 在“要导入的文件”下,单击“浏览”并选择先前创建的备份文件(它将是.sql .zip或.tar.gz文件)。
  • 点击右下角的

成功导入数据库后,您应该会在页面顶部看到一条消息,类似于:导入已成功完成,##查询已执行。

另见:

谈论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”选项中,“IMP​​ORT”。

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表。

在我们的查询中:

  • utf8mb4 charset
  • utf8mb4_unicode_ci collat​​ion
  • wp_commentmeta table
  • mySQL 4.1.14

也许升级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_ciutf8mb4。希望这对你有用。