如果我从mysql中的tablename写下delete *,那么所有行都会删除它,以便在该表中的mysql中获取数据
答案 0 :(得分:2)
不,没有。
正确的查询是DELETE FROM tablename
。 (没有*
)
答案 1 :(得分:2)
从备份恢复。
答案 2 :(得分:1)
取决于,取决于,取决于。
我假设您没有备份。如果你这样做,最好从备份恢复表,如前所述。
如果表格是MyISAM,那么答案就是NO而不是YES。问题是MyISAM以块为单位存储数据。普通块的标头是3或4个字节。删除块的标头是20个字节。因此,即使您从MYD文件中提取记录,第一列(在大多数情况下是您的PK)也将被覆盖。从MYD文件中提取记录几乎是不可能的。
如果是InnoDB,机会要高得多。如果MySQL在事故发生后立即停止/杀死,则机会接近100%。 InnoDB不会立即删除。它将记录标记为已删除,并在InnoDB重建B +树索引时(读取 - 插入新记录时)将物理清除记录。所以,你有时间。在这种情况下你要做的第一件事就是立即停止MySQL,优雅或者杀死-9。
我不知道我是否可以在此处插入网址。谷歌percona数据恢复工具,从主干采取最新的修订,并检查mysqlperformance博客(再次,谷歌)的食谱。
祝你好运。更新:数据恢复工具包已移至GitHub
答案 3 :(得分:0)
最简单的方法是恢复最新的备份。