سؤال

لدي ملف 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)
هل كانت مفيدة؟

المحلول

لديك مزدوج النقل.

هذا الخطأ هو خطأ في قيود المفاتيح الخارجية. من المحتمل أن يكون لدى بعض الجدول التي تحاول إنشاءها مفتاحًا خارجيًا لجدول آخر لم يتم إنشاؤه بعد.

لقد وجدت بعض حالات الخطأ هنا:

بواسطة googling هذا:

المشكلة الثانية هي أنك ربما تواجه مشكلة في محاولة استيراد ملف كبير لأنني لا أعتقد أنه يمكنك تنفيذ أوامر SQL متعددة المنفصل مع ؛ مثل يمكنك في phpmyadmin. أود أن أقترح استخدام برنامج نصي مثل هذا:

لم أجربها بنفسي ، لكن ليس لدي أي سبب للاعتقاد بأنه لا يعمل.

نصائح أخرى

يمكنك دائما فقط انظر إلى رمز المصدر

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top