mysql - 遇到错误 #1060 - 列“forum_enabled”重复
问题描述
这有什么问题?
ALTER TABLE `groups`
ADD COLUMN `forum_enabled` enum('0','1') CHARACTER SET latin1 COLLATE
latin1_swedish_ci NOT NULL DEFAULT '0' AFTER `admindeco`;
ALTER TABLE `user_badges`
ADD UNIQUE INDEX `user_id, badge_id`;
ALTER TABLE `furniture`
ADD COLUMN`behaviour_data` int(11) NOT NULL DEFAULT 0 AFTER
`interaction_type`;
ALTER TABLE `users`
MODIFY COLUMN `rank_vip` int(1) NULL DEFAULT 1 AFTER `rank`;
ALTER TABLE `server_settings`
CHANGE COLUMN `variable` `key` varchar(255) CHARACTER SET latin1 COLLATE
latin1_swedish_ci NOT NULL DEFAULT 'server.variable' FIRST ;
ALTER TABLE `catalog_deals`
DROP COLUMN `page_id`,
DROP COLUMN `cost_credits`,
DROP COLUMN `cost_pixels`,
MODIFY COLUMN `items` text CHARACTER SET latin1 COLLATE
latin1_swedish_ci
NOT NULL AFTER `id`,
ADD COLUMN `room_id` int(11) NOT NULL AFTER `name`;
SET FOREIGN_KEY_CHECKS=0;
我收到以下错误:
SQL 查询: ALTER TABLE groups ADD COLUMN forum_enabled ENUM( '0', '1' ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT '0' AFTER admindeco ; MySQL 说:文档 #1060 - 重复的列名 'forum_enabled'
解决方案
从错误消息来看,您尝试在第一条语句中添加的列似乎已存在于表中。
一个简单的解决方案是在添加之前 DROP 列,例如:
ALTER TABLE `groups`
DROP COLUMN `forum_enabled`;
这可以与ADD
单个语句中的命令结合使用,例如:
ALTER TABLE `groups`
DROP COLUMN `forum_enabled`,
ADD COLUMN `forum_enabled` enum('0','1') ...
;
也可以动态检查列是否存在,然后在需要时将其删除,例如:
IF EXISTS (
SELECT 1
FROM information_schema.columns
WHERE
table_name = 'groups'
AND column_name = 'forum_enabled'
AND table_schema = DATABASE()
) THEN
ALTER TABLE `groups`
DROP COLUMN `forum_enabled`;
END IF;
推荐阅读
- azure - Azure Blob 触发器有时需要太多时间才能触发
- css - 如何设置绝对元素高度 100% og parent
- vector - 是否可以在 protobuf 消息中包含向量字段以生成 Rust 结构?
- java - 如何根据主题动态应用计划的 kafka 消费者?
- reactjs - 在 react-native 中从 StackNavigator 返回组件的问题。得到一个空白屏幕,但 cosole.log 没问题
- tpu - 珊瑚开发板:计算机/树莓派无法识别
- hibernate - 关于 OneToOne 关系的休眠 N+1 问题
- java - Logback 在创建日志文件时无法解析文件名日期模式
- python - 为什么重新定位正在运行的 exe 会使其停止?
- javascript - 垂直添加元素时如何防止背景图像在移动浏览器上缩放?