phpMyAdmin でのインポートと同等のプログラム
-
23-09-2019 - |
質問
phpMyAdmin のインポート機能を使用して適用すると問題なく動作する SqlDump.sql ファイルがありますが、これをプログラムで実行できる必要があります。初心者なので、次のようなことをやってみました。
$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)
解決
あなたは二重の問題を抱えています。
そのエラーは外部キー制約エラーです。作成しようとしているテーブルには、まだ作成されていない別のテーブルへの外部キーが含まれている可能性があります。
ここでエラーのいくつかのインスタンスを見つけました。
- http://www.brainfault.com/2008/02/15/mysql-error-1005-hy000-cant-create-table-tablefrm-errno-150/
- http://forums.mysql.com/read.php?22,19755,19755
これをグーグルで調べてみると:
- http://www.google.is/search?hl=ja&q=Can't+作成+テーブル++(エラー番号:+150)
2 番目の問題は、大きなファイルをインポートしようとするとおそらく問題が発生することです。複数の SQL コマンドを ; で区切って実行できるとは思えないためです。phpmyadmin と同様に。次のようなスクリプトを使用することをお勧めします。
私自身は試したことはありませんが、それが機能しないと信じる理由はありません。
他のヒント
あなた可能性は常にちょうどソースコードを見てみの
所属していません StackOverflow