کاربران جوملایی و استفاده کنندگان از این سیستم مدیریت محتوا مواقعی برای آنها بوجود آمده که با خطای تکرار یا داپلیکیت و یا Duplicate شدن اطلاعات مواجه شده باشند. این ارور که عموما در زمان نصب افزونه یا قالب جدید و یا ایمپورت یک سری اطلاعات خاص ما در یک جدول خاص اتفاق می افتد. میتواند چند علت کلی داشته باشد که سبب بوجود آمدن این نوع خطا میگردد.
ساختار کلی خطا:
1 |
Error Code: 1062. Duplicate entry ‘%s’ for key %d |
شکل های مختلف خطا:
1 |
Error Code: 1062. Duplicate entry ‘۱’ for key ‘PRIMARY’ |
1 |
۱۰۶۲ Duplicate entry '28' for key 'PRIMARY |
1 |
۱۰۶۲ Duplicate entry '802' for key 'PRIMARY' SQL=INSERT INTO `#__extensions` (`extension_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `system_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES (802, 'English (United Kingdom)', 'package', 'pkg_en-GB', '', 0, 1, 1, 1, '', '', '', '', 0, '0000-00-00 00:00:00', 0, 0); |
علت های وقوع خطا:
این خطاها بطور عمومی نشان دهنده ی این موضوع هستند که دیتایی که با آیدی مشخص درحال Insert شدن در جدول دیتابیس موردنظر هست؛ از قبل دارای رکورد مشابهی با آیدی یکسان بوده و در حال حاضر به دلیل اینکه هر آیتم با یک شناسه یکتا در دیتابیس ذخیره میگردد امکان ایمپورت و ذخیره بیش از یک کورد با یک شناسه ثابت وجود ندارد و همانطور که در بالا مشاهده میکنید با خطای Duplicate entry پاسخ عملیات به نمایش گذاشته می شود. به عبارت دیگر و بر اساس خطای نمونه بالا در سایت جوملایی شما یکی از پلاگین ها از شناسه ۸۰۲ استفاده میکند که این آیدی متعلق به پلاگینهای هسته اصلی جوملا است (یا از قبل افزونه ی دیگری با این شناسه بروی سایت شما نصب گردیده است). به دلایلی SQL AUTO_INCREMENT 10000 در جدول #__extensions درست کار نمیکند. همه آیدی های زیر ۱۰۰۰۰ برای جوملا رزرو شده اند و پلاگین های نصب شده نباید از آیدی زیر ۱۰۰۰۰ استفاده کنند.
[quote]پیشنهاد ویژه: سامانه نوبت دهی اینترنتی پزشکان و مراکز درمانی[/quote]
راه حل :
همانطور که در بالا توضیح داده شد وقوع این خطا به دلیل درح مکرر در جدول دارای دیتای تکراری هست. برای مرتفع کردن این مسئله شرکت جوملا مونستر یک اسکپریت اختصاصی طراحی و آماده کرده است. میبایست ابتدا این اسکریپت را دانلود و بروی سایت خود آپلود نمایید و از طریق مرورگر اقدام به فراخوانی و اجرای آن کنید.
خب کار شروع میکنیم ابتدا از سایت خود یک بکاپ تهیه میکنیم.
[quote]قبل از انجام هر تغییر و اصلاحی ؛ لطفاً از سایت و دیتابیس خود یک نسخه بکاپ تهیه کنید.[/quote]
گام اول: در ابتدا فایل زیر را دانلود کنید:
گام دوم: پس از دانلود فایل فوق الذکر آنرا از حالت زیپ خارج کنید و فایل jmdbfix.php را در پوشه public_html در هاست خود آپلود نمایید.
گام سوم: پس از آپلود فایل مورد نظر ؛ همینک این فایل با آدرس http://SiteName.com/jmdbfix.php در دسترس شما قرار خواهد داشت.
گام چهارم: با اجرای اسکریپت بالا با صفحه ای مشابه تصویر زیر مواجه خواهید شد. در این لیست فهرستی مشاهده میکنید که در آن کلیه پلاگین های نصب شده بروی هسته جوملا و سایر الحاقات جانبی موجود بروی سایت جوملایی ایندکس شده اند. این فهرست شامل دو طیف پلاگین می باشد. فهرست پلاگین هایی که با رنگ سبز رنگ مشخص شده اند و جزو پلاگینهایی هستند که نیاز به بررسی جداول آن در دیتابیس وجود دارد و فهرست های قرمز رنگ جزو پلاگین های هسته ای و اصلی سیستم مدیریت محتوای جوملا هستند که نمیبایست در آنها تغییری ایجاد کنید.
گام پنجم: با توجه به تصویر بالا و خطایی که در ابتدا با آن مواجه بوده ایم. کاملا مشخص است که سیستم به پلاگین دارای آیدی ۸۰۲ که در اینجا با F0F NEW مشخص است، خطا دریافت کرده است.این تصویر یک لیست نمونه است. مطمئنا در زمان چک لیست شما ؛ فهرست دیگری متناسب با نوع پلاگین ها و افزونه های نصب شده بروی سایت خود مشاهده خواهید کرد.
گام ششم: در این مرحله با فشردن دکمه Move پلاگینی که آیدی آن موجب ایجاد مشکل در عملکرد سایتمان شده است سعی میکنیم که شناسه آن را به مقادیر بالاتری افزایش دهیم که اینکار با استفاده از اسکریپتی که در بالا به آن اشاره شد انجام میشود. برای شروع دکمه Move را فشار دهید و منتظر بمانید تا صفحه لود شود. در صفحه جدیدی که مشاهده خواهید کرد؛ میبینید که دیگر فهرست از آیتم های سبزرنگ (قابل تغییر) وجود ندارد و همگی به رنگ قرمز یعنی پلاگین های هسته ای و داخلی جوملادر آمده اند و نیازی به اصلاح آنها وجود ندارد.
[quote]پیشنهاد ویژه: سایت آماده تهیه غذای خانگی خونه پز[/quote]
گام هفتم: در این مرحله با صفحه زیر روبرو می شوید که به شکل زیر خواهد بود. این صفحه نمایانگر این موضوع است که دیگر هیچ پلاگینی با آیدی نامناسب در سایت ما وجود ندارد و همه شناسه ها به شکل صحیح خود وجود دارند.
گام هشتم: در این مرحله کار تمام است. در این لحظه میبایست فایل jmdbfix.php را از هاست و جوملا حذف کنید. سپس آخرین نسخه بروزرسانی جوملا را از این لینک دانلود و بروی سایت بریزید. سپس در نهایت از طریق منوی مدیریت جوملا » افزونه ها » مدیریت » پایگاه داده (دیتابیس) » تعمیر/بازسازی را کلیک کنید.
تبریک میگوییم این خطا هم بطور کامل مرتفع گردید.
امیدواریم که این آموزش برای شما مفید بوده باشد.
در صورت وجود هرگونه سوال میتوانید مسائل خود را بعنوان کامنت در همین پست ارسال نمایید.
سلام
وقت بخیر
من در وردپرس با این مشکل برخوردم
Fatal error: Uncaught Exception: خطا در عمل ذخیرهسازی:خطا در عمل ذخیرهسازی:Duplicate entry ‘0’ for key ‘PRIMARY’
in /home/dookmarketuser/domains/dookmarket.ir/public_html/wp-content/plugins/woocommerce/packages/action-scheduler/classes/migration/ActionScheduler_DBStoreMigrator.php on line 44
لطفا راهنمایی کنید قالب من از افزونه دکان پیروی میکنه و وقتی ووکامرس رو فعال میکنم این مشکل پیش میاد
در صورتی که قالب و تمام افزونه ها و وردپرس رو اپدیت کردم
باسلام خدمت شما دوست گرامی.
خطای فوق مربوط به این هستش که در جدولی از دیتابیس رکورد ها به صورت تکراری و داپلیکیت ذخیره میشن درصورت تمایل به بررسی و رفع مشکل میتونید از طریق تیکت جزییات رو اعلام کنید تا مشکل مورد بررسی کامل قرار بگیره.
ارسال تیکت پشتیبانی
با تشکر از شما