質問

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)
役に立ちましたか?

解決

あなたは二重の問題を抱えています。

そのエラーは外部キー制約エラーです。作成しようとしているテーブルには、まだ作成されていない別のテーブルへの外部キーが含まれている可能性があります。

ここでエラーのいくつかのインスタンスを見つけました。

これをグーグルで調べてみると:

2 番目の問題は、大きなファイルをインポートしようとするとおそらく問題が発生することです。複数の SQL コマンドを ; で区切って実行できるとは思えないためです。phpmyadmin と同様に。次のようなスクリプトを使用することをお勧めします。

私自身は試したことはありませんが、それが機能しないと信じる理由はありません。

他のヒント

あなた可能性は常にちょうどソースコードを見てみ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top