使用phpMyAdmin的跟踪机制迁移数据库

Joh*_*han 7 php mysql phpmyadmin database-migration

在开发数据库中,我在所有表上启用了phpMyAdmin Tracking.它记录了我对表结构所做的所有更改(在这种情况下,我对数据跟踪不感兴趣.)到目前为止一切顺利.

我想要做的是为所有跟踪表取出一个报告,使用特定版本(或者日期甚至可以工作)进行更改,以便在升级时可以在生产数据库上运行生成的SQL到新版本,并确保数据库是相同的,而不用担心手动处理这些错误.

但是,我找不到生成此类报告的功能.所有的跟踪报告都是针对单个表格的,如果我必须点击所有表格(20+),它就会带走这个功能的好处.所有表都没有改变,但我不想跟踪改变的内容,这就是我想要phpMyAdmin为我做的事情.

我试图对存储更改的pma_tracking表进行自己的查询,并取得了部分成功.问题是一个版本的所有更改都存储为一个BLOB,并且每个新版本都会生成一个DROP TABLE/CREATE TABLE语句,并且我不能删除生产数据库上的表,因为那里有数据(我是每次都不重新创建数据库,只添加增量更改).我只是想升级结构,我唯一想要CREATE TABLE语句的时候就是在数据库中实际创建一个新表.所以我认为我可以用SQL过滤掉那些,然后将它存储为博客,然后我将不得不解析并弄乱看起来过于复杂的blob文本.

所以,作为总结,这正是我正在寻找的:

  • 自动跟踪系统/工作流,记录所有结构更新,并可从版本或时间点为整个数据库创建增量SQL报告.
  • 我宁愿不使用任何额外的第三方应用程序(我只想使用phpMyAdmin或MySQL),如果可能的话

此外,如果有人有更好的想法,我会喜欢对工作流程的评论.任何帮助赞赏.

nat*_*ore 0

我对 SQL 工具不太熟悉,所以我不能推荐任何东西来帮助你,但我可以尝试帮助你定制工作流程......

  1. 创建一个名为 Structure_log 的表
  2. 创建一个名为 print_stucture.php 的 PHP 脚本,将您想要的任何信息打印到服务器上的文件中,将文件保存为时间戳(这将是您的版本号),并将名称保存在 Structure_log 表中
  3. 创建一个按您希望的频率运行 print_struct.php 的 crontab
  4. 创建一个名为delete_dups.php的PHP脚本,该脚本从structure_log表中获取最后两条记录,比较这两个文件,如果它们相同(表示结构没有更改),则删除具有最新时间戳(文件名)的记录并删除结构日志表中的记录
  5. 创建一个运行 delete_dups.php 的 crontab,运行频率是运行 print_struct.php 的一半

这将在您的服务器上创建一个版本控制文件夹。您可以随时手动运行 print_struct.php 脚本,并将其与服务器文件夹中的最新版本日志进行比较,以查看刚刚运行该脚本的数据库是否与上次运行版本检查时相同。