【问题标题】:MySQL Error - ADD PRIMARY KEYMySQL 错误 - 添加主键
【发布时间】:2012-11-28 07:52:27
【问题描述】:

我的 mysql 服务器有一个大错误。 MySQL昨天崩溃了,但一切都很好。 如果我今天想进行更新,我在添加主键时遇到了问题。 我需要将主键添加到表 A13_product 这里是创建脚本

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

在table中没有使用key,当我给了DROP key,所以他告诉我table没有key

当我查看表 TABLE_contrastion 中的 INFORMATION_SCHEMA 时,表 A13_product 没有键

请问有谁知道,问题出在哪里?

【问题讨论】:

    标签: mysql key primary-key


    【解决方案1】:

    您不能像删除外键或索引或默认值那样删除列上的 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); 
    

    【讨论】:

      【解决方案2】:

      只需将您的创建表结构更改为:

      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;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-20
        • 1970-01-01
        • 1970-01-01
        • 2011-06-15
        • 1970-01-01
        • 2018-05-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多