كيفية حل رمز الخطأ 1060 في SQL Server؟ (خطوة بخطوة)
نشرت: 2025-08-07إذا كنت تعمل في SQL Server وشاهد خطأ يقول شيئًا مثل:
"خطأ 1060: اسم العمود مكرر" لا داعي للذعر. يبدو خطيرًا ، لكنه خطأ شائع.
يظهر هذا عادةً عندما تحاول تغيير جدول عن طريق إضافة عمود جديد ، ولكن اسم العمود موجود بالفعل. ربما لم تلاحظ أنه كان هناك. ربما ركض السيناريو مرتين. في كلتا الحالتين ، يتيح لك SQL Server فقط معرفة ، "مهلا ، هذا العمود موجود بالفعل ، لا يمكنني إضافته مرة أخرى."
لنقسمه بطريقة بسيطة حتى تتمكن من إصلاحه بسرعة وتجنبه لاحقًا.
ماذا يعني رمز خطأ خادم SQL 1060؟
خطأ 1060 يعني أن SQL Server يمنعك من إضافة عمود باسمه موجود بالفعل في الجدول.
يطلق عليه خطأ "اسم العمود مكرر" . دعنا نقول أن الجدول الخاص بك لديه بالفعل عمود اسمه user_email
. إذا حاولت إضافة عمود آخر بنفس الاسم باستخدام ALTER TABLE
، فإن SQL Server يلقي خطأ 1060 لإيقاف الازدواجية.
انها ليست خطأ. إنها مجرد طريقة SQL لحماية بنية قاعدة البيانات الخاصة بك.
أسباب شائعة تجعل SQL Server يعرض رمز الخطأ 1060
يظهر هذا الخطأ عادةً عندما تعمل على تصميم الجدول أو تشغيل البرامج النصية. لا يهم إذا كنت تفعل ذلك في SQL Server Management Studio (SSMS) أو ملف البرنامج النصي - إنه يتعلق بكيفية كتابة الأمر.
فيما يلي المواقف اليومية التي يظهر فيها الخطأ 1060:
- تحاول إضافة عمود موجود بالفعل
- تقوم بتشغيل نفس البرنامج النصي مرتين دون التحقق من العمود
- تقوم بنسخ برنامج نصي من مطور آخر يضيف حقلًا مكررًا
- تقوم باستعادة قاعدة بيانات وتشغيل التحديثات التي تتعارض
- أنت تستخدم أدوات الأتمتة التي تطبق نفس المخطط يتغير أكثر من مرة
- تقوم بتحرير الجداول الكبيرة وفقدان مسار أسماء الأعمدة
- أنت ترحيل تطبيقًا قديمًا وتحاول مزامنة أعمدة جديدة
من السهل الركض ، خاصة في المشاريع المشتركة أو تغييرات مخطط كبيرة.
كيفية إصلاح رمز خطأ خادم SQL 1060؟
يبدو هذا الخطأ مخيفًا في البداية ، ولكن من السهل جدًا إصلاحه. أنت تحاول فقط إضافة عمود موجود بالفعل في الجدول. وبالتالي فإن المفتاح هو تجنب الازدواجية أو التعامل معها بأمان .
جرب هذه الإصلاحات واحدة تلو الأخرى. معظم الوقت ، سيقوم إصلاح #1 أو إصلاح #2 بحلها على الفور.
إصلاح رقم 1: تحقق مما إذا كان العمود موجود بالفعل
قبل محاولة إضافة عمود جديد ، تحقق أولاً من الجدول لمعرفة ما إذا كان هذا العمود موجودًا بالفعل.
يمكنك استخدام استعلام SQL هذا:
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'your_table_name'
سيظهر هذا جميع الأعمدة داخل الجدول. إذا كان العمود الذي تحاول إضافته مدرجًا بالفعل ، فهذه هي مشكلتك. لا تحتاج إلى إضافته مرة أخرى - قم بإزالة هذا الجزء من البرنامج النصي الخاص بك. هذه هي الخطوة الأولى الأكثر أمانًا.
إصلاح رقم 2: استخدم IF NOT EXISTS
في بيان التغيير الخاص بك
لا يسمح SQL Server بالمنطق الدقيق IF NOT EXISTS
داخل ALTER TABLE
مباشرة ، ولكن يمكنك لف الأمر Alter الخاص بك داخل IF
مثل هذا:
IF NOT EXISTS (
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'your_table_name'
AND COLUMN_NAME = 'your_column_name')
BEGIN
ALTER TABLE your_table_name
ADD your_column_name VARCHAR(255)END
هذا يتحقق أولا. إذا لم يكن العمود موجودًا ، فإنه يضيفه. إذا كان هناك بالفعل ، فإنه يتخطى الأمر ، ولا يوجد خطأ. هذا هو أفضل حل لمعظم البرامج النصية التي قد تعمل أكثر من مرة.

إصلاح رقم 3: مراجعة وتنظيف البرامج النصية SQL الخاصة بك
في بعض الأحيان ، لا تكون المشكلة في الكود الخاص بك - إنها في عدد المرات التي يتم فيها تشغيل الرمز. إذا كنت تعمل مع برامج SQL Long SQL أو ملفات الترحيل ، فتحقق من أوامر ALTER TABLE
المتكررة. ربما تتم إضافة نفس العمود أكثر من مرة عن طريق الصدفة.
أيضًا ، إذا قمت بنسخ جزء من برنامج نصي من مصدر آخر ، فتحقق من أنه لا يحتوي على أوامر مكررة لنفس الجدول. خطوة التنظيف هذه مفيدة بشكل خاص عند إدارة تغييرات متعددة.
إصلاح رقم 4: إعادة تسمية أو إسقاط العمود المكررة (إذا لزم الأمر)
إذا كان العمود موجودًا بالفعل ولكن لم يعد مطلوبًا أو يحتوي على اسم خاطئ ، فقد ترغب في إسقاطه أو إعادة تسميته قبل إضافة اسم جديد.
لإسقاط العمود:
ALTER TABLE your_table_name
DROP COLUMN your_column_name
لإعادة تسمية عمود (SQL Server 2016+):
EXEC sp_rename 'your_table_name.old_column_name', 'new_column_name', 'COLUMN'
تحذير: يمكن لأعمدة إسقاط أو إعادة تسمية تطبيق تطبيقك إذا تم استخدام العمود في مكان آخر. استخدم هذا فقط إذا كنت متأكدًا من أن العمود آمن لإزالة أو تغيير.
إصلاح رقم 5: استخدم SQL Server Management Studio (SSMS) للتحقق من المخطط
في بعض الأحيان ، يساعد في رؤية الأشياء بصريًا. افتح SSMS ، واتصل بقاعدة البيانات الخاصة بك ، وتوسيع الجدول. سترى جميع أسماء الأعمدة المدرجة. هذا يجعل من السهل تحديده إذا كان العمود موجودًا بالفعل أو تمت إضافته مع تهجئة مختلفة.
بمجرد التأكيد ، يمكنك العودة إلى البرنامج النصي وتحرير هذا العمود أو تخطيه بأمان. تعد SSMS رائعة للمقياس المزدوج قبل إجراء التغييرات ، خاصة إذا كنت غير متأكد.
أفضل الممارسات لتجنب رمز خطأ خادم SQL 1060
هذا الخطأ قياسي ، ولكن من السهل أيضًا تجنبه بمجرد معرفة كيفية التعامل معه. فيما يلي بعض النصائح التي يمكن أن توفر لك من ضربها مرة أخرى في المستقبل:
- تحقق دائمًا مما إذا كان العمود موجودًا بالفعل قبل إضافته
- استخدم
IF NOT EXISTS
منطق في البرامج النصية الخاصة بك (عند دعمها) - التمسك بتسمية العمود الثابتة الواضحة
- لا تقم بتشغيل نفس الجدول المتغير أكثر من مرة ما لم يكن هناك حاجة
- احتفظ بسجل لتغيير المخطط في سجل التغيير أو التحكم في الإصدار
- اختبار البرامج النصية الجديدة على قاعدة بيانات انطلاق قبل الذهاب مباشرة
- استخدم أدوات مثل SSMS للتحقق بصريًا أعمدة الجدول
- تجنب نسخ SQL للنسخ دون معرفة ما يفعله
يمكن أن تساعدك هذه العادات الصغيرة في كتابة نصوص أنظف وتجنب مشاكل مثل الخطأ 1060.
خاتمة
قد يبدو خطأ SQL Server 1060 مربكًا ، ولكن هذا يعني ببساطة أنك حاولت إضافة عمود موجود بالفعل. تقوم SQL فقط بعملها لحماية بنية الجدول الخاصة بك.
عادةً ما يكون الإصلاح بسيطًا: تحقق من قائمة الأعمدة الخاصة بك ، أو اضبط البرنامج النصي ، أو إضافة شرط لمنع التكرارات. بمجرد أن تفهم سبب ذلك ، من السهل تجنبها في المستقبل.
هذا النوع من الخطأ نموذجي في عمل SQL. كلما تمارس واختبار البرامج النصية الخاصة بك ، كلما كان الأمر أسهل.