2012-02-25 4 views
3

RedMove ORM을 사용하고 있습니다. 스키마를 만들려면 데이터를 삽입하는 표준 redbean 접근 방식을 사용하여 Redbean이 내 필요에 맞게 스키마를 자동으로 맞 춥니 다. 나는 기본적으로 내 데이터베이스를 초기화해야 할 때 스키마를 빌드하는 데 사용되는 스크립트에 넣어.RedBean : 모든 테이블에서 모든 행을 삭제하는 방법

문제는 RedBean이 각 테이블 (처음에는 스키마를 작성하기 위해 redbean을 얻기 위해 삽입 한 테이블)에 행 또는 2를 유지한다는 것입니다.

정상적인 데이터베이스라면 모든 행을 지우려면 스키마를 삭제하고 다시 작성해야하지만이 경우 초기 행이 남아 있기 때문에 불가능합니다.

불행히도 레드 빈 Q/A가 너무 많지 않습니다. 누구든지 Redbean 인터페이스를 사용하여이 작업을 수행하는 방법을 알고 있습니까?

나는이 비록 작동하지 않습니다 물론

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

을 시도했습니다. (I는 외부 링크로이 키를 사용하여 다른 테이블에 대한 오류를 얻을 수 있도록 올바른 순서로 테이블을 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 

누군가가 (redbean API)가있는 경우 솔루션, 그것은 많이 감사하겠습니다. 그리고이 질문은 Stackoverflow에서 RedBean Q/A를 더 많이 구축하는 데 도움이 될 수 있기를 바랍니다.

+0

항상'R :: nuke()'가 있지만, 모든 테이블도 파괴 할 것이라고 생각합니다. 당신이 외래 키를 제거하지 않으면 당신이 닦을 수 있는지 나는 모른다. 그리고 당신이 그것을 간단하게 할 수 있는지 나는 모른다. –

답변

0

사용

R :: nuke();

예, 모든 테이블을 삭제하지만, RedBeanPHP는 모든 테이블을 즉석에서 생성하므로 문제가되지 않습니다.

+2

라이브 사이트가 아닌 개발 환경에서 즉시 테이블을 생성하고자 할 것입니다. – Chris

1

나는 이것이 오래된 게시물 인 것을 알고 있지만 나는 이것을 발견하는 누군가를 도울 것이라고 생각했다. 데이터 무결성을 신경 쓰지 않는다면 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;'); 
관련 문제