RedBean: как удалить все строки из всех таблиц - PullRequest
3 голосов
/ 25 февраля 2012

Я использую RedBean ORM.Чтобы создать схему, я использовал стандартный подход Redbean для вставки данных, чтобы Redbean автоматически подгонял схему под мои нужды.Я поместил это в скрипт, который в основном использовался бы для построения схемы, когда мне нужно инициализировать мою базу данных.

Проблема в том, что RedBean хранит строку или 2 в каждой таблице (те, которые я изначально вставил вполучить redbean для построения схемы).

Если бы это была обычная база данных, чтобы стереть все строки, я бы просто отбросил схему и перестроил ее, но в этом случае это невозможно, поскольку начальные строки все еще существуют.

К сожалению, нетне слишком много Redbean Q / A там.Кто-нибудь знает, как мне это сделать, используя интерфейс Redbean?

Я пробовал

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

Конечно, это не работает.(Он не TRUNCATE таблицы в правильном порядке, поэтому я получаю ошибку о другой таблице, использующей этот ключ в качестве внешней ссылки. Он просто перебирает в порядке 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

Если у кого-то есть (redbeanapi) решение, это будет высоко ценится.И, надеюсь, этот вопрос может быть полезен для создания большего количества вопросов и ответов RedBean здесь, на Stackoverflow.

Ответы [ 2 ]

2 голосов
/ 21 февраля 2017

Я знаю, что это старый пост, но я решил, что помогу кому-нибудь найти это сегодня. Вы можете указать 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;');
0 голосов
/ 21 марта 2012

Используйте

R :: нюк ();

Да, он удалит все таблицы, но поскольку RedBeanPHP создает все таблицы на лету, это не проблема.

...