2010-07-12 23 views
1

我在我的生產服務器上有一個數據庫,它工作正常......我所做的就是將該數據庫的轉儲並在​​我的本地系統中執行..除了一個表之外,所有其他表都創建...所以我手動插入它,這個mysql創建表查詢有什麼問題?

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

我運行這個和它的工作! – 2010-07-12 05:19:28

回答

3

我敢肯定,你必須指定您正在使用的usingbefore索引列:

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

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

在鏈路狀態(MySQL 5.1中)引用的DOCO

[index_type]using btree位。

如果失敗,請檢查您在源服務器和目標服務器上是否具有兼容版本。有一個補丁使得這個命令的解釋更加健壯一些,他們應該在什麼順序。

或者您可以完全刪除using btree並使用服務器默認方法,但您應該瞭解該命令的後果在選擇它作爲一個選項之前。

+0

這似乎沒有工作相同的錯誤.. – 2010-07-12 05:21:53

+0

雅它的工作...我沒有看到你張貼的鏈接..謝謝.. – 2010-07-12 05:25:55

1

你確定你正在使用MySQL的版本,其中「使用BTREE」支持?如果我沒有記錯,那是MySQL 5.1的特性。

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

編輯:其實,這只是一個MySQL 5的功能。

2

您應該在開發和生產系統中使用相同版本的mysql(當然,除了測試mysql升級時)。

使用其他版本使測試無效。不要這樣做。你的開發系統應該運行與你在生產環境中完全一樣的服務器版本,唯一不同的是它需要的參數才能工作(比如你的生產中有32G的ram,但是你的版本只有4G測試服務器,你需要使緩衝區更小)