에서이 데이터베이스를 엔지니어링 할 수 없습니다,하지만 난 메시지가 계속 :앞으로 MySQL의 워크 벤치 내가 스키마 엔지니어 전달하기 위해 노력하고있어 사용 MySQL의 워크 벤치
ERROR: Error 1022: Can't write; duplicate key in table 'tbl_banner_ad'
나는 비슷한 문제를 검토 한 결과를하지만 모든 솔루션을 말한다 이것을 삭제하거나 삭제하지만, 데이터베이스가 어떻게 작동하는지에 영향을주는 무언가를 삭제하고 싶지는 않습니다.
SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @[email protected]@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
-- -----------------------------------------------------
-- Schema ibn_db
-- -----------------------------------------------------
DROP SCHEMA IF EXISTS `ibn_db` ;
CREATE SCHEMA IF NOT EXISTS `ibn_db` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
USE `ibn_db` ;
-- -----------------------------------------------------
-- Table `ibn_db`.`tbl_users`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `ibn_db`.`tbl_users` ;
CREATE TABLE IF NOT EXISTS `ibn_db`.`tbl_users` (
`_id` INT UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,
`name` VARCHAR(80) NOT NULL,
`email` VARCHAR(255) NOT NULL,
`address_building` VARCHAR(80) NULL,
`address_street` VARCHAR(80) NOT NULL,
`address_city` VARCHAR(80) NOT NULL,
`address_county` VARCHAR(80) NULL,
`address_postcode` VARCHAR(13) NOT NULL,
`address_country` VARCHAR(80) NULL,
`is_admin` TINYINT(1) NOT NULL DEFAULT 0,
`phone` VARCHAR(15) NOT NULL,
`company` VARCHAR(80) NULL,
`banned` TINYINT(1) NOT NULL DEFAULT 0,
`ban_reason` VARCHAR(160) NULL,
`ban_expiry_date` DATETIME NULL,
`password` VARCHAR(128) NOT NULL,
`salt` VARCHAR(128) NOT NULL,
`joined_datetime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`last_modified_datetime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`_id`),
UNIQUE INDEX `email_UNIQUE` (`email` ASC))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `ibn_db`.`tbl_unauthorized_users`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `ibn_db`.`tbl_unauthorized_users` ;
CREATE TABLE IF NOT EXISTS `ibn_db`.`tbl_unauthorized_users` (
`_id` INT UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,
`email` VARCHAR(255) NOT NULL,
`password` VARCHAR(128) NOT NULL,
`salt` VARCHAR(128) NOT NULL,
`activation_hash` VARCHAR(128) NOT NULL,
`created_datetime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`_id`),
UNIQUE INDEX `email_UNIQUE` (`email` ASC),
UNIQUE INDEX `activation_hash_UNIQUE` (`activation_hash` ASC))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `ibn_db`.`tbl_events`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `ibn_db`.`tbl_events` ;
CREATE TABLE IF NOT EXISTS `ibn_db`.`tbl_events` (
`_id` INT ZEROFILL UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(80) NOT NULL,
`description` MEDIUMTEXT NULL,
`start_datetime` DATETIME NOT NULL,
`end_datetime` DATETIME NOT NULL,
`created_datetime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`last_modified_datetime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`address_building` VARCHAR(80) NULL,
`address_street` VARCHAR(80) NOT NULL,
`address_city` VARCHAR(80) NOT NULL,
`address_county` VARCHAR(80) NULL,
`address_postcode` VARCHAR(13) NOT NULL,
`address_country` VARCHAR(80) NULL,
`image_url` VARCHAR(255) NULL,
PRIMARY KEY (`_id`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `ibn_db`.`tbl_payments`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `ibn_db`.`tbl_payments` ;
CREATE TABLE IF NOT EXISTS `ibn_db`.`tbl_payments` (
`_id` INT ZEROFILL UNSIGNED NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`_id`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `ibn_db`.`tbl_attendee`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `ibn_db`.`tbl_attendee` ;
CREATE TABLE IF NOT EXISTS `ibn_db`.`tbl_attendee` (
`_id` INT ZEROFILL UNSIGNED NOT NULL AUTO_INCREMENT,
`user_id` INT UNSIGNED NOT NULL,
`event_id` INT UNSIGNED NOT NULL,
`payment_id` INT UNSIGNED NOT NULL,
`created_datetime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`_id`),
INDEX `user_id_idx` (`user_id` ASC),
INDEX `event_id_idx` (`event_id` ASC),
INDEX `payment_id_idx` (`payment_id` ASC),
CONSTRAINT `user_id`
FOREIGN KEY (`user_id`)
REFERENCES `ibn_db`.`tbl_users` (`_id`)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `event_id`
FOREIGN KEY (`event_id`)
REFERENCES `ibn_db`.`tbl_events` (`_id`)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `payment_id`
FOREIGN KEY (`payment_id`)
REFERENCES `ibn_db`.`tbl_payments` (`_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `ibn_db`.`tbl_banner_ad`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `ibn_db`.`tbl_banner_ad` ;
CREATE TABLE IF NOT EXISTS `ibn_db`.`tbl_banner_ad` (
`_id` INT UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,
`user_id` INT UNSIGNED NOT NULL,
`payment_id` INT UNSIGNED NOT NULL,
`url` VARCHAR(255) NOT NULL,
`width` INT UNSIGNED NOT NULL,
`height` INT UNSIGNED NOT NULL,
`created_datetime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`_id`),
INDEX `user_id_idx` (`user_id` ASC),
INDEX `payment_id_idx` (`payment_id` ASC),
CONSTRAINT `payment_id`
FOREIGN KEY (`payment_id`)
REFERENCES `ibn_db`.`tbl_payments` (`_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `user_id`
FOREIGN KEY (`user_id`)
REFERENCES `ibn_db`.`tbl_users` (`_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `ibn_db`.`tbl_reviews`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `ibn_db`.`tbl_reviews` ;
CREATE TABLE IF NOT EXISTS `ibn_db`.`tbl_reviews` (
`_id` INT UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,
`user_id` INT UNSIGNED NOT NULL,
`event_id` INT UNSIGNED NOT NULL,
`comment` VARCHAR(255) NULL,
`stars` INT NULL,
PRIMARY KEY (`_id`),
INDEX `user_id_idx` (`user_id` ASC),
INDEX `event_id_idx` (`event_id` ASC),
CONSTRAINT `user_id`
FOREIGN KEY (`user_id`)
REFERENCES `ibn_db`.`tbl_users` (`_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `event_id`
FOREIGN KEY (`event_id`)
REFERENCES `ibn_db`.`tbl_events` (`_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `ibn_db`.`tbl_login_attempts`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `ibn_db`.`tbl_login_attempts` ;
CREATE TABLE IF NOT EXISTS `ibn_db`.`tbl_login_attempts` (
`_id` INT UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,
`user_id` INT UNSIGNED NOT NULL,
`time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`ip` VARCHAR(45) NOT NULL,
`success` TINYINT(1) NOT NULL,
`fail_reason` VARCHAR(160) NULL,
PRIMARY KEY (`_id`),
INDEX `user_id_idx` (`user_id` ASC),
CONSTRAINT `user_id`
FOREIGN KEY (`user_id`)
REFERENCES `ibn_db`.`tbl_users` (`_id`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
SET [email protected]_SQL_MODE;
SET [email protected]_FOREIGN_KEY_CHECKS;
SET [email protected]_UNIQUE_CHECKS;
편집 : 내 SQL에서
아래 사람이 내가 그이 오류를 제거 얻을 것이다 할 필요가 있지만, 그런 어떤 참조 무결성 또는 아무것도 제거하지 않습니다 무엇을 말해 줄 수 내가 ' INDEX 문을 tbl_banner_ads에서 삭제하려고 시도했지만 인덱스가 외래 키의 일부이기 때문에 삭제할 수 없습니다.
.. 중복 http://stackoverflow.com/questions/23954131/mysql-error-1022-23000-cant-write-duplicate-key-in-table-sql-2b8-2? – SchmitzIT
그것은 같은 문제이지만, 질문이 중복되었습니다.이 특정 SQL 블록에 대한 도움을 요청하고 있습니다. – Adam
여전히 같은 문제가 있습니다. 연결된 질문에서 오류 메시지에 언급 된 테이블의 외래 키 이름을 변경하는 것이 좋습니다. 귀하의 경우,'tbl_attendees'의'CREATE'에서 이미 생성 한'user_id' FK가 될 것입니다. 마찬가지로,'payment_id'도 마찬가지입니다. – SchmitzIT