- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个测试框架,我需要在其中捕获 MySQL 数据库状态(表结构、内容等)。
我需要这个来检查在某些操作后状态没有改变。 (自动增量值可能被允许改变,但我想我能处理这个。)
转储最好采用人类可读的格式(最好是 SQL 代码,如 mysqldump 所做的那样)。
我希望将我的测试框架限制为仅使用 MySQL 连接。要捕获状态,它应该不调用 mysqldump 或访问文件系统(例如复制 *.frm 文件或执行 SELECT INTO 文件,尽管管道很好)。
因为这只是测试代码,所以我不关心性能。不过,我确实需要可靠的行为。
实现我需要的功能的最佳方式是什么?
我想我的代码应该基于一些现有的开源备份工具......哪个是最好的?
更新:我没有指定我编写此代码所用的语言(不,那不是 PHP),因为我认为我无法按原样重用代码 — 我的情况是相当特殊(出于实际目的,让我们假设 MySQL C API)。代码将在 Linux 上运行。
最佳答案
鉴于您的要求,我认为您只剩下(伪代码+ SQL)
tables = mysql_fetch "SHOW TABLES"
foreach table in tables
create = mysql_fetch "SHOW CREATE TABLE table"
print create
rows = mysql_fetch "SELECT * FROM table"
foreach row in rows
// or could use VALUES (v1, v2, ...), (v1, v2, ...), .... syntax (maybe preferable for smaller tables)
insert = "INSERT (fiedl1, field2, field2, etc) VALUES (value1, value2, value3, etc)"
print insert
基本上,获取所有表的列表,然后遍历每个表并为每一行手动生成 INSERT
语句(大多数 api 有一个简单的方法来获取列名列表,否则你可以回退到调用 DESC TABLE
)。
SHOW CREATE TABLE
已为您完成,但我相当确定没有任何类似的事情可以执行 SHOW INSERT ROWS
。
当然,除了打印转储,您还可以用它做任何您想做的事。
关于MySQL:从 SQL 查询转储数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2024683/
我正在为我的应用程序使用 Tank-Auth。我唯一的问题是激活和重置帐户密码。 用于登录、注册、注销;我对这些代码没有问题; $route['login'] = "/auth/login"; $ro
我是一名优秀的程序员,十分优秀!