2012-11-28 99 views
1

我在我的mysql服務器有一個大錯誤。 MySQL昨天已經崩潰,但一切正常。 如果我想今天進行更新,我有添加主鍵的問題。 我需要添加主鍵表A13_product 這裏是創建腳本MySQL錯誤 - 添加主鍵

CREATE TABLE `A13_product` (
`id` INT(11) NOT NULL, 
`users_id` INT(11) NULL DEFAULT NULL, 
`product_set_id` INT(11) NULL DEFAULT NULL, 
`producer_id` INT(11) NULL DEFAULT NULL, 
`photos_id` INT(11) NULL DEFAULT NULL, 
`photogallery_id` INT(11) NULL DEFAULT NULL, 
`name` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`price` DECIMAL(15,5) NULL DEFAULT NULL, 
`price_recycling` DECIMAL(15,5) NULL DEFAULT NULL, 
`description_short` TEXT NULL COLLATE 'utf8_czech_ci', 
`description_long` TEXT NULL COLLATE 'utf8_czech_ci', 
`description_long_en` TEXT NULL COLLATE 'utf8_czech_ci', 
`description_long_de` TEXT NULL COLLATE 'utf8_czech_ci', 
`description_long_sk` TEXT NULL COLLATE 'utf8_czech_ci', 
`has_comments` TINYINT(1) NULL DEFAULT NULL, 
`active` TINYINT(1) NULL DEFAULT NULL, 
`warranty` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`date_add` DATETIME NULL DEFAULT NULL, 
`date_edit` DATETIME NULL DEFAULT NULL, 
`view_count` INT(11) NULL DEFAULT NULL, 
`url` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`sticky` TINYINT(1) NULL DEFAULT NULL, 
`delivery_date` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`possible_buy` TINYINT(1) NULL DEFAULT NULL, 
`var1` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`var2` VARCHAR(255) NOT NULL DEFAULT '' COLLATE 'utf8_czech_ci', 
`var3` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`var4` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`var5` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`poradi` INT(11) NOT NULL DEFAULT '0', 
`tax_rates_id` INT(11) NULL DEFAULT NULL, 
`cache_url` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`description_en` TEXT NULL COLLATE 'utf8_czech_ci', 
`name_en` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`ics` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`var_cz` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`var_en` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`branch` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`cast` VARCHAR(10) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`podc` VARCHAR(10) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`weight` DECIMAL(15,5) NULL DEFAULT NULL, 
`image` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`stupen` VARCHAR(40) NOT NULL COLLATE 'utf8_czech_ci' 
) 
COLLATE='utf8_general_ci' 
ENGINE=InnoDB; 

下面是一個SQL命令,我需要執行

ALTER TABLE A13_product ADD PRIMARY KEY(`id`); 

和錯誤是

SQL Error (156): Table 'c2****.A13_product#1' already exists 

桌子沒有使用鑰匙,當我給DROP鑰匙時,他告訴我桌子上沒有鑰匙

當我查看錶TABLE_contrastion中的INFORMATION_SCHEMA表A13_product

有沒有人知道請問,哪裏可能是問題?

回答

0

您不能像外鍵或索引或默認值那樣在列上放置NOT NULL約束。 這可能是您不能刪除主鍵(如果存在)的原因。 相反,只要使用「變」或「修改」語法和離開關NOT NULL位:

alter table A13_product modify id INT(11) default null; 

在列的任何預先存在的索引或外鍵不受影響。 然後,嘗試做到這一點:

ALTER TABLE A13_product DROP PRIMARY KEY, ADD PRIMARY KEY(id,id); 
0

您創建的表結構簡單更改爲:

CREATE TABLE `A13_product` (
`id` INT(11) NOT NULL, 
`users_id` INT(11) NULL DEFAULT NULL, 
`product_set_id` INT(11) NULL DEFAULT NULL, 
`producer_id` INT(11) NULL DEFAULT NULL, 
`photos_id` INT(11) NULL DEFAULT NULL, 
`photogallery_id` INT(11) NULL DEFAULT NULL, 
`name` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`price` DECIMAL(15,5) NULL DEFAULT NULL, 
`price_recycling` DECIMAL(15,5) NULL DEFAULT NULL, 
`description_short` TEXT NULL COLLATE 'utf8_czech_ci', 
`description_long` TEXT NULL COLLATE 'utf8_czech_ci', 
`description_long_en` TEXT NULL COLLATE 'utf8_czech_ci', 
`description_long_de` TEXT NULL COLLATE 'utf8_czech_ci', 
`description_long_sk` TEXT NULL COLLATE 'utf8_czech_ci', 
`has_comments` TINYINT(1) NULL DEFAULT NULL, 
`active` TINYINT(1) NULL DEFAULT NULL, 
`warranty` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`date_add` DATETIME NULL DEFAULT NULL, 
`date_edit` DATETIME NULL DEFAULT NULL, 
`view_count` INT(11) NULL DEFAULT NULL, 
`url` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`sticky` TINYINT(1) NULL DEFAULT NULL, 
`delivery_date` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`possible_buy` TINYINT(1) NULL DEFAULT NULL, 
`var1` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`var2` VARCHAR(255) NOT NULL DEFAULT '' COLLATE 'utf8_czech_ci', 
`var3` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`var4` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`var5` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`poradi` INT(11) NOT NULL DEFAULT '0', 
`tax_rates_id` INT(11) NULL DEFAULT NULL, 
`cache_url` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`description_en` TEXT NULL COLLATE 'utf8_czech_ci', 
`name_en` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`ics` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`var_cz` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`var_en` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`branch` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`cast` VARCHAR(10) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`podc` VARCHAR(10) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`weight` DECIMAL(15,5) NULL DEFAULT NULL, 
`image` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`stupen` VARCHAR(40) NOT NULL COLLATE 'utf8_czech_ci' 
CREATE TABLE `A13_product` (
`id` INT(11) NOT NULL, 
`users_id` INT(11) NULL DEFAULT NULL, 
`product_set_id` INT(11) NULL DEFAULT NULL, 
`producer_id` INT(11) NULL DEFAULT NULL, 
`photos_id` INT(11) NULL DEFAULT NULL, 
`photogallery_id` INT(11) NULL DEFAULT NULL, 
`name` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`price` DECIMAL(15,5) NULL DEFAULT NULL, 
`price_recycling` DECIMAL(15,5) NULL DEFAULT NULL, 
`description_short` TEXT NULL COLLATE 'utf8_czech_ci', 
`description_long` TEXT NULL COLLATE 'utf8_czech_ci', 
`description_long_en` TEXT NULL COLLATE 'utf8_czech_ci', 
`description_long_de` TEXT NULL COLLATE 'utf8_czech_ci', 
`description_long_sk` TEXT NULL COLLATE 'utf8_czech_ci', 
`has_comments` TINYINT(1) NULL DEFAULT NULL, 
`active` TINYINT(1) NULL DEFAULT NULL, 
`warranty` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`date_add` DATETIME NULL DEFAULT NULL, 
`date_edit` DATETIME NULL DEFAULT NULL, 
`view_count` INT(11) NULL DEFAULT NULL, 
`url` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`sticky` TINYINT(1) NULL DEFAULT NULL, 
`delivery_date` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`possible_buy` TINYINT(1) NULL DEFAULT NULL, 
`var1` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`var2` VARCHAR(255) NOT NULL DEFAULT '' COLLATE 'utf8_czech_ci', 
`var3` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`var4` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`var5` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`poradi` INT(11) NOT NULL DEFAULT '0', 
`tax_rates_id` INT(11) NULL DEFAULT NULL, 
`cache_url` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`description_en` TEXT NULL COLLATE 'utf8_czech_ci', 
`name_en` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`ics` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`var_cz` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`var_en` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`branch` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`cast` VARCHAR(10) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`podc` VARCHAR(10) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`weight` DECIMAL(15,5) NULL DEFAULT NULL, 
`image` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_czech_ci', 
`stupen` VARCHAR(40) NOT NULL COLLATE 'utf8_czech_ci', 
PRIMARY KEY (`id`) 
) COLLATE='utf8_general_ci' ENGINE=InnoDB;