ActiveRecord Mysql2 SelectiveTruncation method is unreliable
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 30/100
调研方向
首先跟踪 SelectiveTruncation 策略及其 ActiveRecord/Mysql2 适配器处理逻辑。重现所描述的 MariaDB/InnoDB 情况,检查 information_schema 中 TABLE_ROWS 和 AUTO_INCREMENT 的值,并确定一种能够可靠清理包含数据或之前包含过数据的表的行为。
由索引模型根据 Issue 内容生成。
描述
The SelectiveTruncation strategy (where database_cleaner looks at "table_rows" in the information_schema) is always applied with a combination of ActiveRecord and Mysql2 adapter. Unfortunately this strategy is unreliable because table_rows is not guaranteed to be accurate. I'm using MariaDB 10.0.16 and I currently have a cucumber javascript scenario where this happens fairly predictably (can't share that in it current state, sorry).
The MariaDB documentation indicates that this information is not reliable with InnoDB tables: https://mariadb.com/kb/en/mariadb/information-schema-tables-table/
The same thing is documented for MySQL 5.6: http://dev.mysql.com/doc/refman/5.6/en/tables-table.html
Looking at information_schema for that particular test database I do notice that AUTO_INCREMENT > 1 for the table that has data and TABLE_ROWS = 0. However, I also see an AUTO_INCREMENT > 1 for tables that (no longer) have data in them.
Perhaps it might be enough to use ... AND (table_rows > 0 OR auto_increment > 1) to clean only those tables that still have or at least had data in them. Otherwise it might be best to just turn this selectivetrunction off, or at least provide an option for that.
- 主要语言
- Ruby
- 星标
- 76
- 派生
- 76
- PR 合并指标
- 30 天内没有已合并 PR
环境准备
我们还没有检查这个项目的环境配置文件。先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
DatabaseCleaner/database_cleaner-active_record 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 62/100
-
难度 5/5 一周以上 新手友好度 30/100
DatabaseCleaner/database_cleaner-active_record#128 · 1 条评论 ·
-
难度 3/5 1-2 天 新手友好度 35/100
DatabaseCleaner/database_cleaner-active_record#127 · 3 条评论 ·
-
难度 2/5 1-3 小时 新手友好度 45/100
-
难度 5/5 一周以上 新手友好度 25/100
查看 DatabaseCleaner/database_cleaner-active_record 的全部 Issue
相似的 Issue
-
security
难度 2/5 1-3 小时 新手友好度 68/100
维护者通常 1 天内回复
-
OSCON 2016未关闭content
难度 2/5 1-3 小时 新手友好度 68/100
rubyevents/rubyevents#2148 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
we-promise/sure#3838 · 2 条评论 ·
维护者通常 1 天内回复
-
Mend: dependency security vulnerability
难度 2/5 1-3 小时 新手友好度 68/100
ManageIQ/manageiq-ui-classic#10341 ·
维护者通常 1 天内回复
-
难度 1/5 1 小时以内 新手友好度 88/100
rubocop/ruby-style-guide#984 ·