2010-07-12 5 views
1

J'ai une base de données dans mon serveur de production et ça marche bien ... Ce que j'ai fait est une sauvegarde de cette base de données et exécutée dans mon système local .. Toutes les autres tables sont créées sauf une table ... insérée,Quel est le problème avec cette requête mysql 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; 

Mais quand j'exécute ce que je reçois l'erreur suivante,

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

Je cours ceci et son travail! –

Répondre

3

Je suis certain que vous devez spécifier le usingbefore la colonne d'index que vous utilisez:

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

Le doco référencé en ce que les états de liaison (MySQL 5.1):

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

et [index_type] est le bit using btree. A défaut, vérifiez que vous disposez de versions compatibles sur le serveur source et le serveur de destination. Il y avait un correctif qui rendait l'interprétation de cette commande un peu plus robuste quant à l'ordre dans lequel ils devraient être.

Ou vous pouvez supprimer le using btree et utiliser la méthode par défaut du serveur bien que vous deviez comprendre les ramifications de cette commande. avant de le choisir en option.

+0

cela ne semble pas fonctionner la même erreur .. –

+0

ya que cela a fonctionné ... Je n'ai pas vu le lien que vous avez posté .. Merci l'homme .. –

1

êtes-vous sûr que vous utilisez une version de MySQL où « UTILISATION BTREE » est pris en charge? Si je me souviens bien, c'est une fonctionnalité MySQL 5.1.

Vous pouvez également avoir frappé http://bugs.mysql.com/bug.php?id=25162

Edit: En fait, il est juste une fonction MySQL 5.

2

Vous devriez utiliser la même version de mysql dans vos systèmes de développement et de production (sauf lors du test d'une mise à niveau de mysql, bien sûr).

L'utilisation d'une version différente invalide le test. Ne fais pas ça. Votre système de développement doit exécuter la même construction de serveur que celle que vous utilisez en production, les seules choses qui devraient être différentes sont les paramètres qui doivent être en ordre pour fonctionner (disons que vous avez 32G de RAM en production, mais seulement 4G sur votre serveur de test, vous devez faire les tampons plus petits là-bas)

Questions connexes