2010-04-01 2 views
2

phpMyAdmin의 가져 오기 기능을 사용하여 적용 할 때 잘 작동하는 SqlDump.sql 파일이 있지만 프로그래밍 방식으로이 작업을 수행 할 수 있어야합니다. 멍청한 놈이기 때문에 나는 다음과 같은 것을 시도했다.phpMyAdmin에서 가져 오기와 동일한 프로그래밍

$SQL=file_get_contents('SqlDump.sql'); 
$DB=mysqli_connect('localhost','root',''); 
mysqli_select_db($DB,'somedb'); 
if (mysqli_multi_query($DB, $SQL)) { 
    do { 
     if ($result = mysqli_store_result($DB)) { 
      mysqli_free_result($result); 
     } 
    } while (mysqli_next_result($DB)); 
} 
$Err=mysqli_error($DB); 
mysqli_close($DB); 

그러나 모든 종류의 MySQL 오류가 발생한다. 그러나 동일한 파일은 phpMyAdmin을 사용하여 가져올 때 잘 작동합니다. 프로그래밍 방식으로이 작업을 수행하려면 어떻게합니까?

오류 :

Can't create table 'somedb.t_sr_u_alertcode' (errno: 150) 
+0

아마도 중복 될 수 있습니다 : http://stackoverflow.com/questions/147821/loading-sql-files-from-within-php –

답변

0

당신은 이중 문제가있을 수 있습니다.

이 오류는 외래 키 제약 조건 오류입니다. 생성하려고하는 일부 테이블에는 아직 생성되지 않은 다른 테이블에 대한 외래 키가있을 것입니다. 이 인터넷 검색에 의해

:

내가 여기 오류의 일부 인스턴스를 발견

두 번째 문제는 대용량 파일을 가져 오는 데 어려움을 겪을 수 있습니다. phpmyadmin에서 할 수있는 것처럼.

나는 그것을 자신을 시도하지 않은,하지만 난 그것을 작동하지 않는 믿을 이유가 없다 : 나는이 같은 스크립트를 사용하는 것이 좋습니다 것입니다.

+1

phpMyAdmin은로드 프로세스 중에 외래 키 제약 조건을 비활성화 할 수 있습니다 – SorcyCat

관련 문제