2013-03-23 7 views
1

실수로 Magento 매장에서 모든 리뷰를 지 웠습니다. 흥미로운 점은 PhpMyAdmin에 로그인 할 때 내 리뷰가 모두있는 review_detail 테이블을 볼 수 있기 때문에 데이터베이스에서 삭제되지 않았을 것이라고 생각합니다.Magento에서 리뷰 SQL을 복원하는 방법

이제 데이터베이스의 리뷰를 사이트에 표시하려면 어떻게해야합니까? review_detail 데이터베이스를 지우고 다시 가져 옵니까?

감사합니다.

+0

2013에서 생성 된 당신은 당신이 실수로 (SQL, 마 젠토의 xml..etc 변경을 사용하여)을 삭제하는 방법에 대한 자세한 내용을 제공 할 수 있을까요? –

+0

실수로 Admin 영역을 통해 지 웠습니다. 일부 스팸 리뷰를 지우고 "모두 확인"버튼을 누르면 모든 것이 사라졌습니다. MyPhp에 갔다가 review_detail 테이블 아래에 여전히 있음을 알 수 있습니다. – Giri06

답변

1

Magento 리뷰는 세 가지 데이터베이스 테이블에 걸쳐 저장됩니다.

review 테이블은 각 리뷰 개체를 추적하여 검토 대상 (즉, 제품)에 연결하는 주 테이블입니다. 거기에 항목이 없다면 리뷰가 없습니다.

review_detail 테이블은 실제로 검토 정보가 포함 된 테이블입니다.

마지막으로 review_store 테이블은 각 Magento 저장소 인스턴스에 어떤 리뷰가 속해 있는지 추적합니다. (동일한 시스템에 Magento "store"객체를 저장한다는 의미입니다.)

내 생각에 review 테이블을 가지고 있지만 다른 것들은 삭제 된 작업입니다. 이 경우 백업없이 데이터가 사라집니다. 거기에 데이터가 남아 있다면 다른 미묘한 문제가 발생합니다. 데이터 복원의 종류가 전문가가 비전문가를 걸을 수있는 종류인지는 확실치 않습니다.

+0

앨런 감사합니다. 귀하의 대답은 정확합니다. review_detail 테이블을 수동으로 검토 테이블에 연결할 수있었습니다. review_table에서 review_id 및 entity_pk_value를 얻을 수 있었고 검토 테이블에서 수동으로 입력했습니다. 누락 된 유일한 사항은 리뷰가 작성된 날짜이므로 제품을 주문한 시점을 확인하고 주문을받은 후 20 일 후에 고객이 리뷰를 제출할 것으로 추정하는 것입니다. 다행히 97 가지 리뷰가 있습니다 : – Giri06

+0

rating_option_vote 테이블에서 얻은 entity_pk_value를 명확하게하기 위해서 review_table – Giri06

+0

의 리뷰 데이터 부분은 rating_option 테이블에 저장되는 등급입니다 – zainengineer

1

Alan과 Giri06의 답변에 기반한 리틀 스크립트로 disapared 리뷰를 복원하십시오.

<?php 
$xml = simplexml_load_file('./app/etc/local.xml', NULL, LIBXML_NOCDATA); 

$db['host'] = $xml->global->resources->default_setup->connection->host; 
$db['name'] = $xml->global->resources->default_setup->connection->dbname; 
$db['user'] = $xml->global->resources->default_setup->connection->username; 
$db['pass'] = $xml->global->resources->default_setup->connection->password; 
$pref = $xml->global->resources->db->table_prefix; 
mysql_connect($db['host'], $db['user'], $db['pass']) or die(mysql_error()); 
mysql_select_db($db['name']) or die(mysql_error()); 

$result = mysql_query("select `entity_pk_value`,`review_id` from `{$pref}rating_option_vote`") or die(mysql_error()); 
for ($i=0;$i<mysql_num_rows($result);$i++) { 
    $row = mysql_fetch_array($result); 
    $exists = mysql_query("select `entity_pk_value`,`review_id` from `{$pref}review` where `review_id`=".$row['review_id']) or die(mysql_error()); 
    if (!mysql_num_rows($exists)) { 
     $query = "insert into `{$pref}review`(`entity_pk_value`,`review_id`,`entity_id`,`status_id`,`created_at`) values({$row['entity_pk_value']},{$row['review_id']},1,1,from_unixtime(unix_timestamp('2013-01-01 01:00:00')+floor(rand()*31536000)))"; 
     echo "Inserting {$row['review_id']}<br>"; 
     mysql_query($query) or die(mysql_error()); 
    } 
} 

날짜 또는 검토는 무작위 곳

관련 문제