1

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

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
4

3 回答 3

3

我很确定您必须在您使用的索引列using 之前指定:

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

该链接状态中引用的文档(MySQL 5.1):

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

[index_type]是位using btree

如果做不到这一点,请检查源服务器和目标服务器上是否有兼容的版本。有一个补丁使对该命令的解释在它们应该处于什么顺序方面更加稳健。

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

于 2010-07-12T05:19:27.057 回答
2

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

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

于 2010-07-12T07:22:52.197 回答
1

您确定您使用的是支持“使用 BTREE”的 MySQL 版本吗?如果我没记错的话,那是 MySQL 5.1 的一个特性。

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

编辑:实际上,它只是 MySQL 5 的一个特性。

于 2010-07-12T05:19:07.340 回答