0

当我尝试在我的数据库中导入转储时,它返回:

第 30001 行的错误 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在第 25 行的 '' 附近使用的正确语法。

sql 文件已使用 MySQL 5.1.2 导出。

奇怪的是,每次我尝试导入时,指示的错误行都会改变!可以是上面的“30001”行,也可以是“400”、“57000”行……不用我更改.sql文件!

导入的sql文件内容为:

CREATE TABLE IF NOT EXISTS `geonames2` (  
`geonameid` int(10)    unsigned NOT NULL DEFAULT '0',  
`name` varchar(200) NOT NULL DEFAULT    '',   
`ansiname` varchar(200) NOT NULL DEFAULT '',  
`alternatenames`    varchar(2000) NOT NULL DEFAULT '',   
`latitude` double NOT NULL    DEFAULT '0',   
`longitude` double NOT NULL DEFAULT '0',      
`feature_class` char(1) DEFAULT NULL,   
`feature_code` varchar(10)    DEFAULT NULL,   
`country_code` char(2) DEFAULT NULL,   
`cc2`    varchar(60) DEFAULT NULL,   
`admin1_code` varchar(20) DEFAULT '',      
`admin2_code` varchar(80) DEFAULT '',   
`admin3_code` varchar(20)    DEFAULT '',   
`admin4_code` varchar(20) DEFAULT '',   
`population`    bigint(11) DEFAULT '0',   
`elevation` int(11) DEFAULT '0',      
`gtopo30` int(11) DEFAULT '0',   
`timezone` varchar(40) DEFAULT NULL,    
`modification_date` date DEFAULT '0000-00-00',   
PRIMARY KEY    (`geonameid`)  ) CHARSET=utf8;

然后,插入部分(这会产生我认为的问题):

INSERT INTO `geonames2` (`geonameid`, `name`, `ansiname`, `alternatenames`,      `latitude`, `longitude`, `feature_class`, `feature_code`, `country_code`, `cc2`, `admin1_code`, `admin2_code`, `admin3_code`, `admin4_code`, `population`, `elevation`, `gtopo30`, `timezone`, `modification_date`)     
     VALUES (1024032, 'Île Glorieuse', 'Ile Glorieuse', 'Glorieuse,Ile Glorieuse,Île Glorieuse', -11.55, 47.3, 'T', 'ISL', 'FR', '', '00', '', '', '', 0, 0, -9999, 'Europe/Paris', '2012-01-18'),
     (1024034, 'Île du Lys', 'Ile du Lys', 'Ile du Lise,Ile du Lys,Le Lys,Île du Lys', -11.5, 47.36667, 'T', 'ISL', 'FR', '', '00', '', '', '', 0, 0, -9999, 'Europe/Paris', '2012-01-18'),
     ...
     ...
     still 137, 000 rows !
     ...
     ...
     (2968290, 'Villes-sur-Auzon', 'Villes-sur-Auzon', 'Villes,Villes-sur-Auzon', 44.05669, 5.2343, 'P', 'PPL', 'FR', '', 'B8', '84', '843', '84148', 1100, 0, 295, 'Europe/Paris', '2011-07-19');

我花了一夜的时间在 INSERT 部分发现问题,但我仍然没有看到问题......我需要一双新的眼睛来帮助我。

4

2 回答 2

0

它工作正常.. 我试图找出错误,但您的代码中没有错误。可能是您的数据库工具有问题。而是转储只是将内容复制并粘贴到工具的 sql 选项卡中。它工作正常,你可以在 sql fiddle看到我的努力。

于 2012-11-22T06:28:36.330 回答
0

脚本可能非常大,而且很难找到错误。连接到数百或数千条语句之一的错误行。

尝试使用dbForge Studio for MySQL(免费快速版)中的 Sql Document 运行脚本。在 Sql Document 中打开您的 SQL 文件并按 F5(执行),错误将带有下划线。在专业版中,将在打开文档时检查语法错误。

于 2012-11-22T07:41:24.973 回答