我的生产服务器中有一个数据库,它工作正常......我所做的是转储该数据库并在我的本地系统中执行..所有其他表都创建,除了一个表...所以我手动插入,
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
答案 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功能。