اذهب إلى المحتوى

السؤال

نشر (معدل)

 Illuminate\Database\QueryException 

  SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'posts' already exists (Connection: mysql, SQL: create table `posts` (`id` bigint unsigned not null auto_increment primary key, `created_at` timestamp null, `updated_at` timestamp null) default character set utf8mb4 collate 'utf8mb4_unicode_ci')

  at vendor\laravel\framework\src\Illuminate\Database\Connection.php:793
    789▕         // If an exception occurs when attempting to run a query, we'll format the error
    790▕         // message to include the bindings with SQL, which will make this exception a
    791▕         // lot more helpful to the developer instead of just the database's errors.
    792▕         catch (Exception $e) {
  ➜ 793▕             throw new QueryException(
    794▕                 $this->getName(), $query, $this->prepareBindings($bindings), $e
    795▕             );
    796▕         }

  1   vendor\laravel\framework\src\Illuminate\Database\Connection.php:578
      PDOException::("SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'posts' already exists")

  2   vendor\laravel\framework\src\Illuminate\Database\Connection.php:578
      PDOStatement::execute()

تم التعديل في بواسطة Mustafa Suleiman
تعديل عنوان السؤال

Recommended Posts

  • 0
نشر

الخطأ يعني أن الجدول 'posts' موجود بالفعل في قاعدة البيانات ولا يمكن إنشاؤه مرة أخرى، وذلك أمر طبيعي يحدث عندما تحاول تشغيل عملية إنشاء جدول عن طريق التهجير والجدول بالفعل موجود في قاعدة البيانات.

لذلك الأمر الصحيح هو التالي:

php artisan migrate:fresh --seed

فهو يستخدم في Laravel لإعادة إنشاء وتحديث قاعدة البيانات بالجداول والبيانات الأولية، و يتكون من عدة أجزاء:

  • "php artisan": يشير إلى تشغيل أمر Laravel عبر واجهة سطر الأوامر.
  • "migrate:fresh": يعني أنه سيتم إعادة إنشاء كل الجداول في قاعدة البيانات، ويتم حذف جميع الجداول الموجودة في قاعدة البيانات وإعادة إنشائها بناءًا على ملفات الترحيل (migrations) الموجودة في مشروع Laravel.
  • "--seed": يشير إلى أنه سيتم تشغيل ملفات بزر البيانات الأولية (seeds) بعد إعادة إنشاء الجداول، وملفات البزر تستخدم لإضافة بيانات افتراضية أو تجريبية إلى قاعدة البيانات بعد إعادة إنشاء الجداول.
  • 0
نشر

 يحدث هذا الخطأ على سبيل المثال عند تشغيل الأمر `php artisan migrate` الذي يقوم بتنفيذ عمليات التهجير (migrations) في Laravel وإنشاء جداول قاعدة البيانات المحددة في الملفات الموجودة في المجلد `database/migrations`.

بالنسبة لحل هذا الخطأ، يمكن مراجعة اسم الجدول المحدد في الملفات migration والتأكد مما إذا كان هناك جدول بنفس الاسم موجود في قاعدة البيانات بالفعل. وفيحدث هذا الخطأ، يمكن حذف الجدول الحالي إذا كان غير مهم أو إعادة تسمية الملف migration لتغيير اسم الجدول المحدد فيه. وبالطبع يجب تأكيد الأمر عند إنشاء جدول جديد في قاعدة البيانات للتأكد من عدم وجود جدول بنفس الاسم موجود بالفعل.

ويمكن أيضاً استخدام الأمر

php artisan migrate:fresh

بدلاً من

php artisan migrate

لحذف جميع الجداول الحالية في قاعدة البيانات وإنشاء جداول جديدة من جديد، ولكن يجب الانتباه إلى أن هذا الأمر سيؤدي إلى فقد جميع البيانات الموجودة في الجداول الحالية.

ويمكن أيضاً استخدام أمر

php artisan migrate:refresh

الذي يقوم بحذف جميع الجداول الحالية في قاعدة البيانات وإعادة إنشائها من جديد، وذلك بدلاً من استخدام `php artisan migrate:fresh` الذي يقوم بإسقاط جميع الجداول وإعادة إنشائها من جديد، مما يؤدي بالضرورة إلى فقد جميع البيانات الموجودة في الجداول الحالية. 

ويمكن استخدام الأمر `php artisan migrate:refresh` على سبيل المثال في حالة تعديلات على بنية الجداول أو إضافة حقول جديدة، ويمكن أن يساعد على تحديث الجداول بشكل أكثر فعالية. ويجب الانتباه إلى أن استخدام هذا الأمر سيؤدي إلى فقد جميع البيانات الموجودة في الجداول الحالية كذلك.

  • 0
نشر

الخطأ انك تحاول انشاء جدول باسم posts وهذا الجدول موجود فعليا في قاعدة البيانات وبالتالي بعد التعديلات التي قمت بعملها عليك تنفيذ الامر التالي:
 

php artisan migrate:fresh

الأمر السابق يقوم بتحديث بنية الجداول اذا تم اي تغييرات عليها  دون فقد اي بيانات.

بإمكانك حذف جميع الجداول واعادة انشائها من خلال الامر التالي :
 

php artisan migrate:refresh

ولكن هذا الامر خطير لانك ستفقد جميع البيانات المخزنة مسبقا

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...