更改列名而不重新创建 MySQL 表

2023-11-22

有没有办法在不进行重大更改的情况下重命名 InnoDB 表上的列?

桌子相当大,我想避免重大停机。


重命名列(使用ALTER TABLE ... CHANGE COLUMN)不幸的是需要 MySQL 运行全表复制。

查看pt-在线架构更改。这有助于您对表进行多种类型的 ALTER 更改,而无需在 ALTER 期间锁定整个表。在将数据复制到新表的同时,您可以继续读取和写入原始表。通过触发器捕获更改并将其应用到新表。

Example:

pt-online-schema-change h=localhost,D=databasename,t=tablename \
  --alter 'CHANGE COLUMN oldname newname NUMERIC(9,2) NOT NULL'

Update:MySQL 5.6 可以在不重建表的情况下执行某些类型的 ALTER 操作,更改列名是支持在线更改的操作之一。看http://dev.mysql.com/doc/refman/5.6/en/innodb-create-index-overview.html概述哪些类型的变更支持或不支持这一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更改列名而不重新创建 MySQL 表 的相关文章

随机推荐

  • Java/Tomcat 被黑客攻击 [已关闭]

    Closed 这个问题是无关 目前不接受答案 最近我的 tomcat 服务器上出现了一些明显是黑客企图的文件 我支持使用 struts 和 ibatis 以及各种其他框架的旧应用程序 创建了三个文件 一个是实际 webapp 目录下的 sy
  • 升级到 JUnit4 并通过一起运行旧版 JUnit 3 测试和测试套件来保留它们

    我很惊讶到目前为止还没有找到答案 如果我错过了一些基本的东西 我会非常高兴知道这一点 有一个大型遗留代码库已升级到 Java 6 从 1 4 代码中存在大量 JUnit 3 测试 并被组织成测试套件 可以使用 Eclipse 中的 JUni
  • 如何首先定义嵌套的识别关系实体框架代码

    我目前首先在一个简单的测试应用程序中使用 EF5 代码来测试各种功能 我定义了两个实体之间的 识别关系 表示一对多链接 这里我定义了一个 PhotoCollection 它有很多子 Photo 实体 public class PhotoCo
  • 在 side div 中随机位置生成数字而不重叠

    我想在 div 内的随机位置显示随机数而不重叠 我能够在随机位置显示随机数 但它超出了盒子范围并相互重叠 这是我的代码 JSFiddle var width container innerWidth var height container
  • 在 Raphael Javascript 库中渲染 SVG 多边形

    据我所知 目前 Raphael Javascript 库中无法显示 SVG 多边形 我正在构建一个需要读取 SVG 并在 Raphael 中显示它们的应用程序 但是 许多 SVG 使用多边形 例如 我正在读取具有以下格式的多边形的 SVG
  • PyQt5 到 PySide2,加载不同类中的 UI 文件

    我有一个在 python3 6 下运行的 python 应用程序 并使用 PyQt5 加载 Ui 窗口 这些窗口是使用 Qt Designer 5 9 4 创建的 下面的代码显示了 PyQt5 的工作示例 现在我想拥有完全相同的功能 但使用
  • 返回具有嵌套级别和值的嵌套列表

    我想使用可视化一些深层嵌套的数据网络D3 我不知道如何在发送之前将数据转换为正确的格式radialNetwork 这是一些示例数据 level lt c 1 2 3 4 4 3 4 4 1 2 3 value lt letters 1 11
  • 是否可以将流量路由到特定 Pod?

    假设我正在 GKE 中运行我的应用程序 这是一个多租户应用程序 我创建了多个托管我的应用程序的 Pod 现在我想要 客户 1 1000 使用 Pod1 使用 Pod2 的客户 1001 2000 ETC 如果我有一个指向我的集群的 gclo
  • 使用 GLUT 在 3D OpenGL 世界中显示固定位置 2D 文本

    我有一个OpenGL项目使用GLUT 不是 freeglut 其中我想在视口上的固定位置显示 2D 文本 我的其余对象位于 3D 世界坐标中 这个答案一个相关的老问题说 GLUT 附带的位图字体是简单的 2D 字体 不适合在 3D 环境中显
  • 这是 .NET 的 Regex.Split 中的错误吗?

    我有两个正则表达式 用于Regex Split lt G and lt G 2 分割字符串时 A B C D E F G 第一个结果是 A B C D E F G 第二个结果是 A B A C D C E F E G 这里发生了什么 我以为
  • 让 html5 地理定位在用户每次重新加载页面时请求许可

    为什么我们需要它 我们的网站上有一些页面 允许用户输入一些数据并搜索其所在地区的其他客户 当用户打开该页面时 必须显示弹出消息 http foo bar com想要使用您当前的位置 之后 用户可以放弃它并手动填写位置字段或接受并自动重定向到
  • 从视频 URL 中提取缩略图

    我必须从视频 来自网址 中提取缩略图 我使用以下代码 NSString stringUrl video stringurl NSURL url NSURL URLWithString stringUrl AVURLAsset asset A
  • 用 C++ 读取另一个进程的标准输出

    在 Windows 中 有没有办法在 C 中启动进程 然后在完成后将其吐出到 stdout 中 如有必要 必须使用提升的权限 在 Vista 或更高版本上 运行该进程 我目前正在使用 ShellExecuteEx 启动进程并运行 while
  • jQuery data() 如何打破循环引用

    我读过一篇为什么它更好 and 它是如何实施的 但我真正不明白的是它如何打破循环引用 它如何打破参考圆 div1 data item div2 div2 data item div1 例如 上面的div互相指向 如何防止 我有一种预感 但我
  • 在不裁剪的情况下缩放 SDL Surface 的正确方法?

    缩放 SDL Surface 的正确方法是什么 我在网上找到了一种解释 但它需要逐像素地重新绘制表面 似乎应该有某种方法可以通过 SDL 本地执行此操作 而不是像那样重新绘制图像 我在 SDL 文档中找不到任何涉及此内容的内容 我可以通过修
  • 从 sbt shell 中设置环境变量

    我希望能够在交互式 sbt shell 中设置环境变量 但我似乎找不到方法来做到这一点 我查看了官方 sbt 文档以及 stackoverflow 但没有成功 我想明确的是我不想要必须在中设置此环境变量build sbt文件 而是能够在交互
  • android从布局xml动态添加元素

    如何从此布局 xml 中获取元素 myButton
  • 如何获取 RawInput HID 设备的人类可读名称?

    我正在将应用程序从 DirectInput 切换到 RawInput 以进行游戏手柄处理 并且我想为每个游戏手柄提供人类可读的描述 理想的情况是显示在设备管理器中的设备文本 但 USB 产品描述也可以 任何方法都应该在没有管理员许可的情况下
  • 谷歌地图 setMap 不是一个函数

    我正在处理我的谷歌地图页面在 Firebug 中显示错误的问题 当我在经销商地图中搜索时 将触发 clearLocations 函数 但出现了这个错误 markers i setMap 不是一个函数 有谁知道如何解决这个问题 我在几个论坛和
  • 更改列名而不重新创建 MySQL 表

    有没有办法在不进行重大更改的情况下重命名 InnoDB 表上的列 桌子相当大 我想避免重大停机 重命名列 使用ALTER TABLE CHANGE COLUMN 不幸的是需要 MySQL 运行全表复制 查看pt 在线架构更改 这有助于您对表