Mysql 奇怪的sql导入语法错误

Mysql 奇怪的sql导入语法错误,mysql,import,wamp,Mysql,Import,Wamp,我正在将一个MySQL数据库从我的笔记本电脑导入PC。我导出了我的WAMP MySQL.sql文件,现在正试图在我的PC上导入它。这在过去一直有效,此后我只更改了几张表。。。但现在我得到了以下错误: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near

我正在将一个MySQL数据库从我的笔记本电脑导入PC。我导出了我的WAMP MySQL
.sql
文件,现在正试图在我的PC上导入它。这在过去一直有效,此后我只更改了几张表。。。但现在我得到了以下错误:

  #1064 - You have an error in your SQL syntax; check the manual that corresponds 
  to your MySQL server version for the right syntax to use near 
  'CREATE TABLE IF NOT EXISTS `join_quests_npcs` (
  `jqn_id` int(6) NOT NULL AUTO_' at line 16 
信息:

但我不认为WAMP版本中的这个小差异会导致这样的语法错误

我也不认为它所抱怨的有什么问题。。。下面是它从导出的
.sql
文件中抱怨的块,我正在尝试导入该文件:

CREATE TABLE IF NOT EXISTS `join_quests_npcs` (
  `jqn_id` int(6) NOT NULL AUTO_INCREMENT,
  `quest_id` int(6) NOT NULL,
  `npc_id` int(6) NOT NULL,
  PRIMARY KEY (`jqn_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=15 ;
有什么想法吗

谢谢


编辑:

也很好奇:

.sql
文件中的第一个表创建时没有问题:

-- phpMyAdmin SQL Dump
-- version 4.0.4
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Oct 27, 2014 at 09:15 PM
-- Server version: 5.6.12-log
-- PHP Version: 5.4.12

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!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 utf8 */;

--
-- Database: `my_test_db_2014`
--
    CREATE DATABASE IF NOT EXISTS `my_test_db_2014` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
    USE `my_test_db_2014`;

    -- --------------------------------------------------------

    --
    -- Table structure for table `gather_items`
    --
CREATE TABLE IF NOT EXISTS `gather_items` (
  `item_id` int(6) NOT NULL,
  `item_name` varchar(100) NOT NULL,
  `item_chinese` varchar(100) NOT NULL,
  `item_x` int(6) NOT NULL,
  `item_y` int(6) NOT NULL,
  `item_image` varchar(255) NOT NULL,
  `item_total` int(1) NOT NULL,
  `item_cost` int(11) NOT NULL,
  PRIMARY KEY (`item_id`),
  UNIQUE KEY `gather_item_id` (`item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `gather_items`
--

INSERT INTO `gather_items` (`item_id`, `item_name`, `item_chinese`, `item_x`, `item_y`, `item_image`, `item_total`, `item_cost`) VALUES

(1, 'rice', 'fàn', 60, 255, 'data/img/sprite/rice.png', 1, 10),
(2, 'water', 'shui', 30, 400, 'data/img/sprite/poly.png', 3, 40),
(3, 'meat', 'rou', 500, 100, 'data/img/sprite/meat.png', 1, 100);

-- --------------------------------------------------------
创建此表时出错:

--
-- Table structure for table `join_quests_npcs`
--

CREATE TABLE IF NOT EXISTS `join_quests_npcs` (
  `jqn_id` int(6) NOT NULL AUTO_INCREMENT,
  `quest_id` int(6) NOT NULL,
  `npc_id` int(6) NOT NULL,
  PRIMARY KEY (`jqn_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=15 ;

编辑2:

所以我删除了
join\u quest\u npcs
表创建,看看它是否仍然会抱怨,现在它在下面的下一个块再次出错。。。因此,我认为它与
collection\u items
第一个表的创建有关

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE TABLE IF NOT EXISTS `levels` (
  `level_id` int(11) NOT NULL,
  `levelnam' at line 17 
SQL块:

--
-- Table structure for table `levels`
--

CREATE TABLE IF NOT EXISTS `levels` (
  `level_id` int(11) NOT NULL,
  `levelname` varchar(255) NOT NULL,
  `associatedQuestIDs` varchar(255) NOT NULL,
  PRIMARY KEY (`level_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `levels`
--

INSERT INTO `levels` (`level_id`, `levelname`, `associatedQuestIDs`) VALUES
(1, 'mymap', '101 102 103'),
(2, 'mymap2', '201 202');

找到了。问题来自第一个表的创建:
collection\u items
,而不是MySQL抱怨的地方

具体来说,它是从插入这一行开始的,这一行包含一个utf-8特殊字符,
fán
。重音符号打断了插入

(1,'rice','fán',60255',data/img/sprite/rice.png',1,10),

当我作为纯文本插入时,
fan
,所有行都正确插入

我认为问题在于,即使我使用默认的charset=UTF8创建表

ENGINE=InnoDB DEFAULT CHARSET=utf8;
即使我在导入utf8时指定了我的字符集:

DB导入脚本指定的字符集
latin1

CREATE DATABASE IF NOT EXISTS `my_test_db_2014` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
因此,我需要将脚本的
默认字符集
更改为utf8


您还需要将正确的排序规则从
latin1\u swedish\u ci
更改为
utf8\u general\u ci
,如下所示:

快速检查发行说明不会显示任何内容。@JayBlanchard想得好。那我就完全被难倒了。这通常是我的例行导出/导入。@JayBlanchard您认为编码与此有关吗?我的一些字段中有特殊字符(中文字符),所以我使用的是
utf8
。Hmmmm-不应该。在创建块之前是什么?MySQL可能正在抱怨这一点。@JayBlanchard我发现了这个问题。
CREATE DATABASE IF NOT EXISTS `my_test_db_2014` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;