春哥昨天在帮客户迁移数据的过程中,在导入数据的时候发生了一个You have an error in your SQL syntax的错误,相信这个错误大家应该是经常遇到的,那么高朋网络工作室今天就分享一下如何解决这个问题。
具体报错:
#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 'USING BTREE`userid_int`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1' at line 10 |
具体执行的sql语句:
CREATE TABLE IF NOT EXISTS `cj_scenedata` ( `dataid_bigint` BIGINT( 20 ) NOT NULL AUTO_INCREMENT , `sceneid_bigint` BIGINT( 20 ) NOT NULL DEFAULT '0', `pageid_bigint` BIGINT( 20 ) NOT NULL DEFAULT '0', `elementid_int` INT( 11 ) DEFAULT '0', `elementtitle_varchar` VARCHAR( 50 ) DEFAULT NULL , `elementtype_int` INT( 11 ) NOT NULL DEFAULT '5', `userid_int` INT( 11 ) NOT NULL DEFAULT '0', PRIMARY KEY ( `dataid_bigint` ) , KEY `sceneid` ( `sceneid_bigint` , `userid_int` ) USING BTREE ) ENGINE = MYISAM DEFAULT CHARSET = utf8 AUTO_INCREMENT =1; |
春哥就直接开门见山的说了,具体是因为:数据库版本问题,从MySQL 5.1版本转移到5.0版本,高版本往低版本转移,有些SQL语法不适用的问题啦。那么这个具体的SQL到底是哪一个呢?答案即将揭晓:没错就是USING BTREE这个二货惹的祸,其实也不能怪人家了,谁叫低版本的数据库不支持USING BTREE语法呢。
具体解决方法:
查找SQL文件中所有包含”USING BTREE“的文件,把这段代码提到()前面。春哥给大家举个例子啊,比如这个应该这样修改:
KEY `sceneid` ( `sceneid_bigint` , `userid_int` ) USING BTREE直接改为KEY `sceneid` USING BTREE( `sceneid_bigint` , `userid_int` )
这样试试,直接OK,好了 教程到此结束。