这个mysql创建表查询有什么问题?

时间:2010-07-12 05:13:41

标签: mysql mysql-error-1064 create-table

我的生产服务器中有一个数据库,它工作正常......我所做的是转储该数据库并在我的本地系统中执行..所有其他表都创建,除了一个表...所以我手动插入,

CREATE TABLE `contact` (
  `contactId` int(11) NOT NULL AUTO_INCREMENT,
  `cRefId` int(20) DEFAULT '0',
  `contactFirstName` varchar(100) DEFAULT NULL,
  `contactLastName` varchar(100) DEFAULT NULL,
  `contactPhone` varchar(35) DEFAULT NULL,
  `contactEmail` varchar(150) DEFAULT NULL,
  `organizationid` int(11) NOT NULL,
  `mobileNo` varchar(35) DEFAULT NULL,
  `dor` datetime DEFAULT NULL,
  `doe` datetime DEFAULT NULL,
  `dod` datetime DEFAULT NULL,
  `designation` varchar(50) DEFAULT NULL,
  `income` double DEFAULT NULL,
  `homeloan` tinyint(1) DEFAULT NULL,
  `companyName` varchar(200) DEFAULT NULL,
  `isDeleted` tinyint(1) DEFAULT '0',
  `addressId` int(11) DEFAULT NULL,
  `accgroupid` int(11) DEFAULT NULL,
  `createdBy` int(11) DEFAULT NULL,
  `editedBy` int(11) DEFAULT NULL,
  `deletedBy` int(11) DEFAULT NULL,
  `assignedto` int(11) DEFAULT NULL,
  `industryid` int(11) DEFAULT NULL,
  `note` varchar(150) DEFAULT NULL,
  `twirrerId` varchar(150) DEFAULT NULL,
  `linkedinId` varchar(150) DEFAULT NULL,
  PRIMARY KEY (`contactId`),
  KEY `aa` (`organizationid`),
  KEY `add_id` (`addressId`),
  KEY `idx_contactid` (`contactId`),
  KEY `FK_contact` (`industryid`),
  KEY `fk_contacteditedby_user` (`editedBy`),
  KEY `fk_contactaccount_account` (`accgroupid`,`contactId`),
  KEY `contact_First_Name` (`contactFirstName`) USING BTREE
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;

但是当我执行此操作时,我收到以下错误,

Error Code : 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
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1' at line 35

3 个答案:

答案 0 :(得分:3)

我非常确定您必须指定您正在使用的索引列的using before

... KEY `contact_First_Name` USING BTREE (`contactFirstName`)

该链接中引用的doco表示(MySQL 5.1):

{INDEX|KEY} [index_name] [index_type] (index_col_name,...) [index_option] ...

[index_type]using btree位。

如果失败,请检查源服务器和目标服务器上是否存在兼容版本。有一个补丁使得该命令的解释在它们的顺序方面更加强大。

或者您可以完全删除using btree并使用服务器默认方法,但在选择它之前您应该了解其后果。

答案 1 :(得分:2)

您应该在开发和生产系统中使用相同版本的mysql(当然,在测试mysql升级时除外)。

使用其他版本会使测试无效。不要这样做。您的开发系统应该运行与您在生产中使用的完全相同的服务器构建,唯一不同的是需要的参数才能使其工作(比如你在生产中有32G ram,但是你的只有4G测试服务器,你需要在那里缩小缓冲区)

答案 2 :(得分:1)

您确定使用的是支持'USING BTREE'的MySQL版本吗?如果我没记错的话,那就是MySQL 5.1功能。

您也可以点击http://bugs.mysql.com/bug.php?id=25162

编辑:实际上,它只是一个MySQL 5功能。

相关问题