1

本番サーバーにデータベースがあり、正常に動作します...私がしたことは、そのDBのダンプを取り、ローカルシステムで実行したことです..他のすべてのテーブルは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`)

そのリンクで参照されている doco の状態 (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

「USING BTREE」がサポートされているバージョンの MySQL を使用していますか? 私の記憶が正しければ、これは MySQL 5.1 の機能です。

http://bugs.mysql.com/bug.php?id=25162にアクセスすることもできます

編集: 実際には、これは単なる MySQL 5 の機能です。

于 2010-07-12T05:19:07.340 に答える