InnoDBテーブルを使用してデータベースに外部キーを使用する際に問題が発生しました。私はERモデルを設計するためにMySQL Workbenchを使用しており、MySQL 5.1.54で開発するためのZend Server(OS X)を持っています。すべてエラーなしで正常に動作します。エラー:エラー1280:インデックス名が正しくありません
このデータベースをライブサーバーに展開すると失敗します。これは、MySQL 5.1.58-1〜dotdeb.1-logを持つDebianインストールです。私はこれら2つのシステムがなぜ違うのか理解できません。
ERROR: Error 1280: Incorrect index name 'fk_accounts_countries_idcountry'
DROP TABLE IF EXISTS `countries` ;
SHOW WARNINGS;
CREATE TABLE IF NOT EXISTS `countries` (
`idcountry` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT ,
`name` CHAR(50) NOT NULL ,
`prefix` CHAR(2) NULL DEFAULT NULL ,
`tld` CHAR(4) NULL DEFAULT NULL ,
PRIMARY KEY (`idcountry`))
ENGINE = InnoDB
AUTO_INCREMENT = 270
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci;
SHOW WARNINGS;
-- -----------------------------------------------------
-- Table `accounts`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `accounts` ;
SHOW WARNINGS;
CREATE TABLE IF NOT EXISTS `accounts` (
`idaccount` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`countries_idcountry` SMALLINT UNSIGNED NOT NULL ,
`fk_account` INT UNSIGNED NOT NULL ,
`fk_country` INT UNSIGNED NOT NULL ,
`username` CHAR(30) NOT NULL ,
`password` CHAR(32) NOT NULL ,
`mail` CHAR(50) NOT NULL ,
`address` CHAR(50) NULL ,
`city` CHAR(50) NOT NULL ,
`company` CHAR(50) NULL ,
`phone` CHAR(25) NULL ,
`regdate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
`ratedate` TIMESTAMP NULL ,
`lastlogin` TIMESTAMP NULL ,
`activated` TINYINT(1) NULL DEFAULT 0 ,
`activation` CHAR(32) NULL ,
PRIMARY KEY (`idaccount`) ,
CONSTRAINT `fk_accounts_countries_idcountry`
FOREIGN KEY (`countries_idcountry`)
REFERENCES `countries` (`idcountry`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
SHOW WARNINGS;
CREATE INDEX `fk_accounts_countries_idcountry` ON `accounts` (`countries_idcountry`ASC);
SHOW WARNINGS;
あなたは既に定義され、その中に 'あなたは' CREATE INDEX'文で再びそれを作成しようとすると、それだけです... –
をTABLE'のCREATE *インデックス警告*、*エラーではありません。それを無視して何か役に立つものに移りなさい。 – Bohemian
[Mysqlが私にエラー1280 "間違ったインデックス"を与えている理由(http://stackoverflow.com/questions/6389010/why-mysql-is-giving-me-error-1280-wrong-index) –