从版本控制 mysql schemata 开始,没有过度杀伤力。好的解决方案吗?

2023-11-24

我已经意识到我必须开始对数据库模式和更改进行版本控制。因此,我阅读了有关该主题的现有帖子,但我不确定如何继续。

我基本上是一家单人公司,不久前我什至没有对我的代码使用版本控制。我在 Windows 环境中,使用 Aptana (IDE) 和 SVN(带有 Tortoise)。我从事 PHP/mysql 项目。

什么是有效且足够(不过分)的方式来版本化我的数据库模式?

我在某些项目中确实有一两个自由职业者,但我预计不会发生大量分支和合并。所以基本上我想跟踪我的代码修订的并发模式。

[edit] 瞬间解决:目前,我决定每当我要提交标签(稳定版本)时,我都会制作一个模式转储加上一个包含必要的初始数据的模式转储。在现阶段这对我来说似乎已经足够了。[/编辑]

[edit2]加上我现在还使用第三个名为increments.sql的文件,其中我将所有更改与日期等放在一起,以便轻松跟踪一个文件中的更改历史记录。有时我会将更改集成到其他两个文件中并清空increments.sql[/edit]


对于小公司来说,简单的方法是:将数据库转储到 SQL 并将其添加到存储库中。然后,每次更改某些内容时,都将更改添加到转储文件中。

然后,您可以使用 diff 来查看版本之间的更改,更不用说使用注释来解释您的更改了。这也将使您几乎不受 MySQL 升级的影响。

我看到的一个缺点是您必须记住手动将 SQL 添加到转储文件中。你可以训练自己永远记住,但如果你和别人一起工作的话要小心。错过更新可能会在以后带来痛苦。

这可以通过在提交到 subversion 时创建一些复杂的脚本来为您完成此操作来缓解,但这对于一个人来说有点太多了。

Edit:在回答这个问题之后的一年里,我不得不为一个小团队实施 MySQL 版本控制方案。手动添加每个更改被认为是一个麻烦的解决方案,就像评论中提到的那样,因此我们转储数据库并将该文件添加到版本控制中。

我们发现测试数据最终被转储,并且很难找出发生了什么变化。这可以通过仅转储模式来解决,但这对于我们的项目来说是不可能的,因为我们的应用程序依赖于数据库中的某些数据来运行。最终我们返回到手动添加对数据库转储的更改。

这不仅是最简单的解决方案,而且还解决了某些版本的 MySQL 在导出/导入方面存在的某些问题。通常我们必须转储开发数据库,​​删除任何测试数据、日志条目等,删除/更改某些适用的名称,然后才能创建生产数据库。通过手动添加更改,我们可以准确地控制生产中最终会发生什么,每次一点点,以便最终一切准备就绪,并尽可能轻松地迁移到生产环境。

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

从版本控制 mysql schemata 开始,没有过度杀伤力。好的解决方案吗? 的相关文章

  • 如何在 PHP 中正确分割路径

    执行以下操作的最佳方法是什么 我通过 AJAX 请求获取路径 e g dir1 dir2 dir3 dir4 我需要在我的网页上这样展示它 dir1 gt gt dir2 gt gt dir3 gt gt dir4 它们每个都是 html
  • PHP 警告 ZipArchive::extractTo():权限被拒绝

    我创建了一个应用程序 它使用 ZipArchive 类 php 中的标准 中的方法 extractTo 并在 Windows 7 上的本地主机 apache 服务器上对其进行了测试 没有任何问题 但是当我在一些unix生产服务器上尝试过它之
  • Mysql - 如何比较两个 Json 对象?

    将整个 MySql json 列与 json 对象进行比较的语法是什么 以下不起作用 select count criteria from my alerts where criteria industries 1 locations 1
  • 配置 .htaccess 以在 PHP 框架 (Silex) 上工作

    我的 Apache2 本地主机 linux 上有一个工作路径 http localhost lab silex web index php hello name 我想成为 http localhost lab silex hello nam
  • WHERE 子句或 ON 子句中的 INNER JOIN 条件?

    我今天输错了一个查询 但它仍然有效并给出了预期的结果 我的意思是运行这个查询 SELECT e id FROM employees e JOIN users u ON u email e email WHERE u id 139840 但我
  • 使用 PDO 在 SQLite 中检索单个(且唯一)行的最简单方法

    我有这个 PDO stmt db gt prepare SELECT FROM channels WHERE id id stmt gt bindValue id id SQLITE3 INTEGER result stmt gt exec
  • WAMP 不显示目录列表中的图标

    过去 我通过 vmware 处理 PHP 代码 但最近我决定转而通过 WAMP 在 Windows 8 1 上 在本地进行处理 我创建了一个空文件夹tests in the www folder 然后在我的浏览器上输入http localh
  • 登录后所有页面都应该是https吗?

    这有点难以解释 但我会尽力 有一个网站 每个页面上都有登录表单 其中包含用户名 密码字段 这些页面未使用 SSL 用户填写用户名 密码并提交表单后 表单将被发送到 https 的身份验证页面 对于这种情况我有几个疑问 向 https 页面提
  • 我可以显示我在 PHP 中设置的所有 cookie 吗?

    我正在尝试诊断 cookie 中的错误 但 cookie 的名称不是应有的名称 PHP 有没有办法打印我的域设置的所有 cookie 你有没有尝试过 print r COOKIE
  • 使用 DOM 获取 div 的内容(包括子标签)

    我正在使用 DOM 来获取 div 标签的内容 但内部 html 部分未显示 功能是 dom new DOMDocument libxml use internal errors true dom gt loadHTMLFile url l
  • 使用 php 和 symfony 从数组创建 Excel 文件

    我正在尝试使用 PHP 和 symfony 将数组导出为 XLS 文件 如下面的代码所示 创建 XLS 文件后 我只能获取数组的最后一行 并且它显示在文件的第一行中 似乎 lignes 变量没有增加 我不明白出了什么问题 有人可以帮忙吗 f
  • 解析 PHP 响应:未捕获的语法错误:意外的标记 <

    我正在使用 AJAX 来调用 PHP 脚本 我唯一需要从响应中解析的是脚本生成的随机 ID 问题是 PHP 脚本会引发许多错误 这些错误实际上很好 不会妨碍程序功能 唯一的问题是当我跑步时 parseJSON response I get
  • 需要使用 php 从远程服务器下载与 $_FILES 相同的内容[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 好的 我有处理图像上传的 php 代
  • 左连接 SQL 求和

    我有两张桌子想要加入 比如说表 a 和表 b 表 b 有许多行指向表 a 表 b 包含价格 实际上是一个购物篮 所以我想要的是表a中的所有记录和表b中的价格之和 我努力了 select a sum b ach sell from booki
  • 无需下载整个文件即可读取 ID3 标签

    是否可以读取 MP3 文件的 ID3 标签 持续时间 艺术家 标题 而无需下载整个文件 我做了一些测试 只需下载 MP3 文件的几个字节就可以获得艺术家和标题标签 但我不确定持续时间和其他标签是否可能 Thanks 我刚刚发现 ffmpeg
  • $_SESSION 中保存大量信息可以吗?

    我需要存储许多数组 SESSION以防止从 MySQL 检索信息 可以吗 其中 太多 的信息有多少 SESSION还是没有 太多 谢谢 附 或者更好地使用http php net manual en book memcache php ht
  • 如何显示不同页眉的页面? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在为我的学校项目开发网站 但我遇到了一个问题 我在每个页面上显示一个标题 我的标题之一包含登录表单 另一标题包含用户名 搜索栏等 问题是
  • NodeJS 和 PHP (Laravel) 集成用于 Socket.IO 实时聊天

    目前我有一个我写过的网站PHP通过Laravel 框架 我已经使用写了一个实时聊天nodeJS with 套接字IO and Express现在我想做的是将它集成到我已经编写的 Laravel 网站中 问题是聊天必须在主页中 当前由 Lar
  • PHP - 查找和比较日期

    你好 我有 foreach 我可以在其中获取数据库中的事件数据 我使用数据库中的日期名称 例如 event date 我需要在一个 div 中比较具有相同日期和输出的操作 例如我有这个事件 活动一 9 月 13 日 活动二 9 月 1 日
  • 我的数据库有错误

    创建表时如下 create table Ticket ticket id integer not null primary key AirlineName varchar not null CustomerName varchar from

随机推荐

  • 如何通过 at() 函数访问二维向量的索引?

    我将在成员函数中初始化一个 2D 向量 其中输入参数计划被输入到函数参数内的确定索引中 此外 出于安全考虑 我不会使用 运算符来进行成员访问 如何使用 at 函数来访问 2D 向量的索引 如下所示 vector
  • 如何正确显示孟加拉语文本

    我有一个JTextArea我需要在其中显示孟加拉语文本 例如 但我只能看到长方形的盒子 如何正确显示孟加拉语字符 首先采用孟加拉 unicode 支持的字体 例如 Font banglaFont new Font Arial Unicode
  • os.sched_getaffinity(0) 与 os.cpu_count()

    所以 我知道标题中两种方法的区别 但不知道实际含义 据我了解 如果您使用的 NUM WORKERS 数量多于实际可用的核心数量 您将面临性能大幅下降 因为您的操作系统不断地来回切换 试图保持并行 不知道这有多真实 但我在某处从比我聪明的人那
  • PowerShell ScriptBlock 到底是什么

    PowerShell ScriptBlock 不是词汇闭合因为它不会关闭其声明环境中引用的变量 相反 它似乎利用了动态作用域和自由变量 这些变量在运行时绑定在 lambda 表达式中 function Get Block b PowerSh
  • MarshmallowrelativeLayout 与alignBaseline 的行为很奇怪

    在 Android 6 0 Marshmallow 上 EditText 相对于具有基线和layout alignBaseline 属性的RelativeLayout 中的ImageView 的定位不再起作用 甚至可以在 Android s
  • 使用“as”进行 TypeScript 转换[重复]

    这个问题在这里已经有答案了 我试图塑造一个类型any为布尔值 所以我简单地这样做了 let a
  • Google 日历 API、RRULE 和 EXDATE

    我正在尝试使用 API 将一些事件导出到 Google Calendar 特别是包装它的 python 库 这些事件会重复发生 这是使用 RRULE 字符串定义到 Google 日历的 并且我尝试使用 EXDATE 字符串排除某些日期 这是
  • POST 内容长度超出限制

    当用户上传文件时 我在 php 的 error log 中收到类似的错误 PHP 警告 POST 内容长度 11933650 字节超出了第 0 行未知中 8388608 字节的限制 在我的 php ini 在 public html 中创建
  • 如何用C#创建CSV Excel文件? [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我正在寻找用于创建 CSV Excel 文件的课程 预期功能 使用极其简单 转义逗号和引号 以便 excel 可以很好地处理它们 以时区证明格式导出日期和日期时间 你知道有什么类可以做
  • 在构建后事件期间确定程序集版本

    假设我想创建一个随每个版本一起提供的静态文本文件 我希望使用发行版的版本号更新该文件 如中指定的 AssemblyInfo cs 但我不想手动执行此操作 我希望我可以使用构建后事件并将版本号提供给批处理文件 如下所示 call foo ba
  • 如何将角度日期转换为另一个时区

    我在用Date 获取本地时区的当前时间 我已将其格式化如下 this today new Date from new DatePipe en Us transform this today dd MM yyyy hh mm ss 现在我想转
  • 添加自定义 LinearLayout 时 Android 布局预览器抛出错误

    我定义了一个自定义 ViewGroup 来扩展 LinearLayout 的功能 public class TestLayout extends LinearLayout public TestLayout Context context
  • iOS 10 中的 sqlite3_prepare_v2 exc_bad_access

    我在我的 iOS 项目中使用 sqlite 作为数据库 在 iOS 9 中 一切都运行良好 现在我已经更新了新的 Xcode 但应用程序在 sqlite3 prepare v2 处多次崩溃 另外 我不会超时关闭数据库 并且只打开一次 我在下
  • 如何在正则表达式中使用变量?

    我想创建一个String replaceAll JavaScript 中的方法 我认为使用正则表达式是最简洁的方法 但是 我不知道如何将变量传递给正则表达式 我已经可以做到这一点 这将替换所有实例 B with A ABABAB repla
  • 通过索引查询LIKE%MYSQL搜索速度慢

    我的表有 100 000 000 行 非常大 表的结构 id int INDEX not primary not unique just index lang index varchar 5 INDEX name varchar 255 I
  • 如何在 Cocos2D 3.x 中为 CCSprite 制作动画?

    你知道如何制作动画吗CCSprite在新的Cocos2D v3 x 很多类都改变了 旧的方法似乎不起作用 NSMutableArray animFrames NSMutableArray array for int i 1 i lt 3 i
  • mmap 比 getline 慢?

    我面临着逐行读取 写入文件 在演出中 的挑战 阅读许多论坛条目和站点 包括一堆 SO mmap 被建议作为读取 写入文件的最快选项 但是 当我使用 readline 和 mmap 技术实现代码时 mmap 是两者中较慢的一个 对于阅读和写作
  • 在 Parse (Android) 中保存和检索照片和视频

    我正在看解析Android文档并发现要保存照片和视频 您必须初始化new ParseFile带有名称和数据的 byte 并保存它 将图像 Uri 和视频 Uri 转换为字节数组的最简单方法是什么 以下是我尝试的解决方案 mPhoto new
  • 如何在 Django 中执行 JSON 处理程序

    我想在 django 视图中获取并解析 json 模板中的请求 var values input name param each function values this attr name this val ajax type POST
  • 从版本控制 mysql schemata 开始,没有过度杀伤力。好的解决方案吗?

    我已经意识到我必须开始对数据库模式和更改进行版本控制 因此 我阅读了有关该主题的现有帖子 但我不确定如何继续 我基本上是一家单人公司 不久前我什至没有对我的代码使用版本控制 我在 Windows 环境中 使用 Aptana IDE 和 SV