【问题标题】:RedBean: How to delete all rows from all tablesRedBean:如何从所有表中删除所有行
【发布时间】:2012-03-15 14:33:35
【问题描述】:

我正在使用 RedBean ORM。为了创建模式,我使用了插入数据的标准 redbean 方法,以便 Redbean 可以自动适应模式以满足我的需要。我把它放在一个脚本中,当我需要初始化我的数据库时,它基本上可以用来构建模式。

问题在于 RedBean 在每个表中保留一到 2 行(我最初插入这些表以获取 redbean 以构建模式)。

如果它是一个普通数据库,要删除所有行,我只需删除架构并重建它,但在这种情况下这是不可能的,因为初始行仍然存在。

不幸的是,那里没有太多的 Redbean Q/A。任何人都知道我将如何使用 Redbean 界面来做到这一点?

我试过了

    $listOfTables = R::$writer->getTables();
foreach($listOfTables as $table)
{
    R::wipe($table);
}

当然这不起作用。 (它不会以正确的顺序截断表,所以我得到一个关于使用这个键作为外部链接的另一个表的错误。它只是按 ABC 顺序迭代)

Fatal error: Uncaught [42000] - SQLSTATE[42000]: Syntax error or access violation: 1701 Cannot truncate a table referenced in a foreign key constraint (`redbeandb`.`research`, CONSTRAINT `research_ibfk_1` FOREIGN KEY (`ownEducationHistory_id`) REFERENCES `redbeandb`.`educationhistory` (`id`)) thrown in C:\Users\Rod\nginx-1.0.12\html\rb.php on line 105

如果有人有(redbean api)解决方案,将不胜感激。希望这个问题有助于在 Stackoverflow 上建立更多 RedBean Q/A。

【问题讨论】:

  • 总是有R::nuke(),但我认为这也会毁掉你所有的桌子。我不知道你是否可以擦除,除非你删除外键,我不知道你是否可以简单地做到这一点。

标签: orm truncate redbean


【解决方案1】:

使用

R::nuke();

是的,它会删除所有表,但由于 RedBeanPHP 会动态创建所有表,这不是问题。

【讨论】:

【解决方案2】:

我知道这是一篇旧帖子,但我想我会帮助今天找到这个的人。如果您不关心数据完整性(计划擦除所有相关表),您可以告诉 mysql 忽略外键检查。

R::exec('SET FOREIGN_KEY_CHECKS = 0;');
$listOfTables = R::$writer->getTables();
foreach($listOfTables as $table)
{
    R::wipe($table);
}
R::exec('SET FOREIGN_KEY_CHECKS = 1;');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-28
    • 2011-03-01
    • 2013-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多