在'('id')附近使用正确语法的MySQL服务器版本

时间:2013-05-17 11:04:17

标签: mysql

当我尝试导入数据库时​​出现此错误

您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在'(' id')附近使用正确的语法 )TYPE = MyISAM AUTO_INCREMENT = 6'在第4行

 DROP TABLE IF EXISTS `categories`;
 CREATE TABLE `categories` (
 `id` int(5) NOT NULL auto_increment,
  `category` varchar(50) NOT NULL default '',
  PRIMARY KEY  ('id')
  ) TYPE=MyISAM AUTO_INCREMENT=6 ;

4 个答案:

答案 0 :(得分:2)

您在代码中遇到两个问题,请删除主键声明中id周围的单引号。你可以使用反引号或什么也没用。

并将Type=MyISAM更改为:

ENGINE=MyISAM

来自MySQL Docs

  

旧版术语TYPE作为ENGINE的同义词支持向后兼容,但ENGINE是首选术语,不推荐使用TYPE。

所以脚本将是:

DROP TABLE IF EXISTS `categories`;
 CREATE TABLE `categories` (
 `id` int(5) NOT NULL auto_increment,
  `category` varchar(50) NOT NULL default '',
  PRIMARY KEY  (id)
  ) ENGINE=MyISAM AUTO_INCREMENT=6 ;

请参阅SQL Fiddle with Demo

答案 1 :(得分:2)

您在这里使用'

PRIMARY KEY  ('id')
在这种情况下,

id是一个字符串,而不是列名。请改用反引号。

PRIMARY KEY  (`id`)

答案 2 :(得分:2)

试试这个:

DROP TABLE IF EXISTS `categories`;
 CREATE TABLE `categories` (
 `id` int(5) NOT NULL auto_increment,
  `category` varchar(50) NOT NULL default '',
  PRIMARY KEY  (`id`)
  ) ENGINE=MYISAM AUTO_INCREMENT=6

问题是PRIMARY KEY ('id')应该使用带引号的反引号

答案 3 :(得分:-2)

1064您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在#disc; FROM disc_disc WHERE disc_id = NULL'附近使用正确的语法。第1行SQL = SELECT disc_id,disc_name,FROM disc_disc WHERE disc_id = NULL

    // zjistit jmeno diskuse
$disc_name = "";
$sql = sprintf("SELECT disc_id, disc_name, " .
    "FROM disc_disc " .
    "WHERE disc_id=%s",
quote_smart($disc_id));
$db->setQuery($sql);
$rec = $db->loadObjectList();

if ($db->getErrorNum()) {
    JError::raiseWarning( 500, $db->stderr() );
}