Duplicate column name 'xxx'错误

关于数据库错误
Duplicate column name 'card'

这个错误直接翻译过来就是,重复的字段'card'.在数据库中,数据是存储在字段里的,字段就相当于一个表头一样。做插件,要存储插件的数据,就得有插件自己的字段,而且这些字段在相同的数据表中是唯一的。在卡片中心里,升级字段的数据库代码如下
  1. ALTER TABLE `cdb_posts` ADD `card` INT( 6 ) UNSIGNED NOT NULL DEFAULT '0';
  2. ALTER TABLE `cdb_posts` ADD `postscript` TEXT NOT NULL;
  3. ALTER TABLE `cdb_members` ADD `cards` TEXT NOT NULL;
  4. ALTER TABLE `cdb_members` ADD `postscript` TEXT NOT NULL;
  5. ALTER TABLE `cdb_members` ADD `pigavatar` INT( 10 ) NOT NULL ;
复制代码

这些代码执行完了之后,建立了5个新的字段(括号里是所在数据表,括号前是字段名)

card(in post)postscript(in post)cards(in members)postscript(in members)pigavatar(in members)
数据1数据2数据3数据4数据5
数据11数据22数据33数据44数据55
...............

这个就是字段。如作在post表中card这个字段已经存在了的情况下,仍然升级
  1. ALTER TABLE `cdb_posts` ADD `card` INT( 6 ) UNSIGNED NOT NULL DEFAULT '0';
复制代码

就会出现
Duplicate column name 'card'

这样的错误,因为数据库是不允许两个字段有相同的字段名。

解决方法,那太简单了,既然升级数据库代码是为了创建这个字段,而这个字段又已经存在了,那不升级这个代码就行了呗呵呵。只要删除相应的升级语句就可以了

比如出现错误
Duplicate column name 'card'

那就不要升级
  1. ALTER TABLE `cdb_posts` ADD `card` INT( 6 ) UNSIGNED NOT NULL DEFAULT '0';
复制代码

出现错误
Duplicate column name 'postscript'

那就不要升级
  1. ALTER TABLE `cdb_posts` ADD `postscript` TEXT NOT NULL;
复制代码

这样一条一条的检验,就可以了