সীমাবদ্ধতা সক্ষম করতে ব্যর্থ। এক বা একাধিক সারিগুলিতে অ শূন্য, অনন্য, বা বিদেশী-কী সীমাবদ্ধতা লঙ্ঘনকারী মান রয়েছে


168

আমি একটি বহিরাগত যোগদান করি এবং informixডাটাবেসে সফলভাবে সম্পাদন করি তবে আমি আমার কোডে নিম্নলিখিত ব্যতিক্রম পেয়েছি:

DataTable dt = TeachingLoadDAL.GetCoursesWithEvalState(i, bat);

সীমাবদ্ধতা সক্ষম করতে ব্যর্থ। এক বা একাধিক সারিগুলিতে অ শূন্য, অনন্য, বা বিদেশী-কী সীমাবদ্ধতা লঙ্ঘনকারী মান রয়েছে।

আমি সমস্যাটি জানি, তবে কীভাবে এটি ঠিক করতে হয় তা আমি জানি না।

আমি দ্বিতীয় সারণীতে বাইরের জোড়টি তৈরি করি তাতে একটি যৌগিক প্রাথমিক কী রয়েছে যা পূর্ববর্তী বাহ্যিক যোগ কোয়েরিতে শূন্য।

সম্পাদনা করুন:

    SELECT UNIQUE a.crs_e,  a.crs_e  || '/ ' || a.crst crs_name, b.period,
           b.crscls, c.crsday, c.from_lect, c.to_lect,
           c.to_lect - c.from_lect + 1 Subtraction, c.lect_kind, e.eval, e.batch_no,
           e.crsnum, e.lect_code, e.prof_course
    FROM rlm1course a, rfc14crsgrp b, ckj1table c, mnltablelectev d,
         OUTER(cc1assiscrseval e)  
    WHERE a.crsnum = b.crsnum 
    AND b.crsnum = c.crsnum 
    AND b.crscls = c.crscls 
    AND b.batch_no = c.batch_no 
    AND c.serial_key = d.serial_key  
    AND c.crsnum = e.crsnum  
    AND c.batch_no = e.batch_no  
    AND d.lect_code= e.lect_code 
    AND d.lect_code = .... 
    AND b.batch_no = ....

সমস্যাটি টেবিলের সাথে ঘটে cc1assiscrseval। প্রাথমিক কীটি হ'ল (ব্যাচ_নো, ক্রিসনাম, লেেক্ট_কোড)।

কীভাবে এই সমস্যার সমাধান করবেন?


সম্পাদনা করুন:

@PaulStockপরামর্শ অনুসারে : তিনি যা বলেছিলেন আমি তা করি, এবং আমি পেয়েছি:

? dt.GetErferences () [0] {System.Data.DataRow} hasErferences: সত্য আইটেমআরাই: {অবজেক্ট [10]} RowError: "কলাম 'ইভাল' DBNull.Value এর অনুমতি দেয় না।"

তাই আমি প্রতিস্থাপন e.evalকরে NVL (e.eval,'') evalআমার সমস্যাটি সমাধান করি,। এবং এটি আমার সমস্যার সমাধান করে। অনেক ধন্যবাদ.


আমি যখন ,e.eval,e.batch_no,e.crsnum,e.lect_code,e.prof_courseকোয়েরি থেকে সরিয়ে ফেলি প্রতিটি জিনিস ঠিক হয়ে যায়। দয়া করে সমস্যা কি
কোনও নাম ডোনটকেয়ার

ADO.NET এ একটি বাগও রয়েছে যেখানে "অ-অনন্য ক্লাস্টারড ইনডেক্স" ডেটা টেবেলে একটি ভুল তথ্য তৈরি করবে Uউইনিক কনস্ট্রেন্ট আইটেম।
Brain2000

উত্তর:


352

এই সমস্যাটি নিম্নলিখিত নিম্নলিখিতগুলির মধ্যে সাধারণত হয়

  • AllowDBNull এ সেট না করে কলামগুলির জন্য নাল মানগুলি ফেরত দেওয়া হচ্ছে
  • একই প্রাথমিক কী দিয়ে সদৃশ সারিগুলি ফেরত দেওয়া হচ্ছে।
  • ডাটাবেস এবং ডেটাসেটের মধ্যে কলাম সংজ্ঞা (উদাহরণস্বরূপ চর ক্ষেত্রের আকার) এর একটি অমিল

আপনার কোয়েরিটি দেশীয়ভাবে চালানোর চেষ্টা করুন এবং ফলাফলটি যদি খুব বড় না হয় তবে ফলাফলগুলি দেখুন। যদি আপনি নাল মানগুলি মুছে ফেলে থাকেন তবে আমার অনুমান যে প্রাথমিক কী কলামগুলি নকল করা হচ্ছে।

অথবা, সঠিক ত্রুটিটি দেখতে, আপনি নিজে তৈরির মতো কোডটিতে ম্যানুয়ালি একটি ট্রাই / ক্যাচ ব্লক যুক্ত করতে পারেন এবং তারপরে ব্যতিক্রম উত্থাপিত হলে ব্রেকিং করতে পারেন:

এখানে চিত্র বর্ণনা লিখুন

তারপরে কমান্ড উইন্ডোতে, GetErrorsটেবিলে কল পদ্ধতিটি ত্রুটি পেয়েছে।
সি # এর জন্য, কমান্ডটি ? dataTable.GetErrors()
ভিবি-র জন্য হবে , আদেশটি? dataTable.GetErrors

এখানে চিত্র বর্ণনা লিখুন

এটি আপনাকে সমস্ত দাতারা দেখিয়ে দেবে যার মধ্যে একটি ত্রুটি রয়েছে। এরপরে আপনি RowErrorএগুলির প্রতিটিটির জন্য নজর রাখতে পারেন , যা আপনাকে সমস্যার পাশাপাশি কলামটি অবৈধ বলে দেবে। সুতরাং, প্রথম ডেটরোর ত্রুটি ত্রুটিতে ত্রুটি দেখতে কমান্ডটি হ'ল:
? dataTable.GetErrors(0).RowError
বা সি # তে হবে? dataTable.GetErrors()[0].RowError

এখানে চিত্র বর্ণনা লিখুন


4
অনেক ধন্যবাদ . >? dt.GetErrors()[0] {System.Data.DataRow} HasErrors: true ItemArray: {object[10]} RowError: "Column 'eval' does not allow DBNull.Value."
কোনও নাম ডোনটকেয়ার

4
অসাধারণ. এটি কাজ করে না, তবে আমি ডেটাসেটের জন্য একটি ঘড়ি যুক্ত করতে এবং টাইপ করতে পারি itএর পরে গেটআররেস এবং মানগুলি প্রসারিত করতে পারি। এটি অত্যন্ত কার্যকর। আশা করি পরের বারের
দরকারের

6
হ্যাঁ এটি সত্যিই সহায়ক ছিল - আমার ত্রুটির কারণ ছিল ক্ষেত্রটির দৈর্ঘ্য টেবিল অ্যাডাপ্টারের কলামের সর্বোচ্চ দৈর্ঘ্যের চেয়ে দীর্ঘ। একটি জিনিস আমি লক্ষ্য করেছি যে ডিজাইনার ফাইলে ব্রেকআপপয়েন্টটি আঘাত করতে আপনার সরঞ্জামসমূহ> বিকল্পগুলি> ডিবাগিংয়ে যেতে হবে এবং "" জাস্ট মাই কোড সক্ষম করুন "টি চেক করা নেই তা নিশ্চিত করা উচিত। এরপরে এটি আপনাকে ডিজাইনার ফাইল কোডের মধ্যে দিয়ে যাওয়ার অনুমতি দেবে।

1
আপনাকে ধন্যবাদ পলস্টক আপনার উত্তর দেওয়ার জন্য আমি আমার একই সমস্যাটি সমাধান করেছি।
উদয়

1
এটি অত্যন্ত কার্যকর ছিল, আমি ডেটা কলামের দৈর্ঘ্যের মধ্যে একটি মিল খুঁজে পেয়েছি - এটি ডেটাবেসে নয় ডেটাবেসে বৃদ্ধি করা হয়েছিল।
রব

38

আপনি ডেটাসেটের সীমাবদ্ধতাগুলি অক্ষম করতে পারেন। এটি আপনাকে খারাপ ডেটা সনাক্ত করতে এবং সমস্যা সমাধানে সহায়তা করবে।

যেমন

dataset.TableA.Clear();
dataset.EnforceConstraints = false;
dataAdapter1.daTableA.Fill(dataset, TableA");

ভরাট পদ্ধতিটি আপনার জন্য কিছুটা আলাদা হতে পারে।


1
এটি আমার সমস্যার কারণ হিসাবে চিহ্নিত ডেটা খুঁজে পেতে সহায়তা করেছিল যা "খারাপ ডেটা" নয় বরং ডেটা উত্স কনফিগারেশন উইজার্ডের খারাপ আচরণ ছিল। বাহিরে যাওয়া এবং ডিবি-তে কথা বলা সত্ত্বেও এটি সংশোধিত কলামের বাধা (এবং বুট করার জন্য আমি একটি যুক্ত টেবিল মিস করছি) পাচ্ছি না এবং ক্যাশে সক্ষম নয়।
23:52

এই উত্তরের জন্য ধন্যবাদ। আমার একটি কেস সংবেদনশীল সমস্যা ছিল এবং এটি সঠিকভাবে ডেটাসেটে সেট করা দরকার।
ড্যান

10

এটি টেবিলের সমস্ত সারি খুঁজে পাবে যাতে ত্রুটি রয়েছে, সারিটির প্রাথমিক কীটি এবং সেই সারিটিতে যে ত্রুটি ঘটেছে তা মুদ্রণ করে ...

এটি সি # তে রয়েছে তবে এটিকে ভিবিতে রূপান্তর করা শক্ত হওয়া উচিত নয়।

 foreach (DataRow dr in dataTable)
 {
   if (dr.HasErrors)
     {
        Debug.Write("Row ");
        foreach (DataColumn dc in dataTable.PKColumns)
          Debug.Write(dc.ColumnName + ": '" + dr.ItemArray[dc.Ordinal] + "', ");
        Debug.WriteLine(" has error: " + dr.RowError);
     }
  }

ওফস - দুঃখিত, পিকে কলমগুলি এমন কিছু যা আমি যুক্ত করেছি যখন আমি ডেটা টেবিলটি প্রসারিত করি যা আমাকে সমস্ত কলামগুলিতে বলে যা ডেটাবেলের প্রাথমিক কী তৈরি করে। আপনি যদি আপনার ডেটাবেটে প্রাথমিক কী কলামগুলি জানেন তবে আপনি সেগুলি এখানে লুপ করতে পারেন। আমার ক্ষেত্রে, যেহেতু আমার সমস্ত ডেটাবেবলগুলি তাদের পিকে কলগুলি জানে আমি এই ত্রুটিগুলির জন্য সমস্ত টেবিলের জন্য স্বয়ংক্রিয়ভাবে ডিবাগ লিখতে পারি।

আউটপুটটি দেখতে এটির মতো দেখাচ্ছে:

Row FIRST_NAME: 'HOMER', LAST_NAME: 'SIMPSON', MIDDLE_NAME: 'J',  has error: Column 'HAIR_COLOR' does not allow DBNull.Value.

যদি আপনি উপরের পিকে কলামগুলি বিভাগ সম্পর্কে বিভ্রান্ত হন - এটি কলামের নাম এবং মানগুলি মুদ্রণ করে এবং এটি প্রয়োজনীয় নয়, তবে কোন কলাম মানগুলি সমস্যার কারণ হতে পারে তা সনাক্ত করার জন্য সহায়ক সমস্যা সমাধানের তথ্য যুক্ত করে। এই বিভাগটি সরিয়ে ফেলতে এবং বাকী রাখলে এখনও এসকিউএলাইট ত্রুটি উত্পন্ন হওয়ার মুদ্রণ হবে, যা সমস্যাটি কলামটি নোট করবে।


1
ঠিক কোথায় ভুল হয়েছে তা জানার উজ্জ্বল উপায়। উত্তরাধিকার সূত্রে আমি যে সমাধান পেয়েছি যেখানে ডেটাগুলির সাথে অসঙ্গতি রয়েছে তাতে সম্পূর্ণভাবে আমাকে অবিচ্ছিন্ন সমস্যাগুলি সহায়তা করেছিল। যদিও এটি একটি ডেটাসেটে ছিল এবং আমি কেবল প্রতিটি টেবিলের মাধ্যমে পুনরাবৃত্তি করেছি, তারপরে প্রতিটি সারি। +10 যদি আমি পারতাম।
আন্দিজ 7'14

এটি আমার পক্ষে কাজ করেছে। এটি একটি ছিল Column 'MyColumn' does not allow DBNull.Value, তবে এটি অন্য কোনওভাবে প্রদর্শন করবে না। ধন্যবাদ :)
অ্যালেক্স

7
  • সারণী অ্যাডাপ্টারের ক্যোয়ারির নামযুক্ত ক্ষেত্রগুলি আপনার সংজ্ঞায়িত ক্যোয়ারির সাথে মেলে তা নিশ্চিত করুন। ডালটি মিলেছে বলে মনে হচ্ছে না। আপনি কোনও টেবিলে একটি নতুন ক্ষেত্র যুক্ত করার পরে এটি সাধারণত আপনার স্প্রোকস এবং কোয়েরিতে ঘটবে।

  • আপনি যদি ডাটাবেসে কোনও বার্চারের ক্ষেত্রের দৈর্ঘ্য পরিবর্তন করে থাকেন এবং এক্সএসএস ফাইলের মধ্যে থাকা এক্সএমএল এটি বাছাই না করে থাকে তবে এক্সএমএলে ক্ষেত্রের নাম এবং বৈশিষ্ট্য সংজ্ঞাটি খুঁজে বার করুন এবং ম্যানুয়ালি এটিকে পরিবর্তন করুন।

  • টেবিল অ্যাডাপ্টারগুলিতে নির্বাচিত তালিকা থেকে প্রাথমিক কীগুলি সরিয়ে ফেলুন যদি সেগুলি ডেটার সাথে ফেরতের সাথে সম্পর্কিত না থাকে।

  • এসকিউএল ম্যানেজমেন্ট স্টুডিওতে আপনার ক্যোয়ারী চালান এবং নিশ্চিত করুন যে এখানে সদৃশ রেকর্ডগুলি ফিরে আসেনি। সদৃশ রেকর্ডগুলি সদৃশ প্রাথমিক কী তৈরি করতে পারে যা এই ত্রুটির কারণ হবে।

  • এসকিউএল ইউনিয়নগুলি সমস্যার বানান করতে পারে। আমি একটি টেবিল অ্যাডাপ্টারটি সংশোধন করে অন্যদের পূর্ববর্তী একটি 'দয়া করে কোনও কর্মচারী নির্বাচন করুন' রেকর্ড যুক্ত করেছি। অন্যান্য ক্ষেত্রগুলির জন্য আমি ডামি ডেটা সহ সরবরাহ করেছি, উদাহরণস্বরূপ, এক দৈর্ঘ্যের স্ট্রিং। ডিএএল সেই প্রাথমিক রেকর্ড থেকে স্কিমাটি অনুমান করে। দৈর্ঘ্যের 12 টি স্ট্রিং সহ রেকর্ডগুলি ব্যর্থ হয়েছে।


1
ববকে স্বাগতম! আমি আপনার উত্তর সম্পাদনা করেছি (এখনও পর্যালোচনায়, যদিও)। উদাহরণস্বরূপ, আমরা উত্তরগুলিতে অভিবাদন এবং স্বাক্ষর না রাখাই পছন্দ করি (এটি "নয়েস" হিসাবে বিবেচিত হয়, দয়া করে FAQ দেখুন)। আপনার নাম এবং মহাভাটার সর্বদা যাইহোক উত্তর নীচে প্রদর্শিত হবে।
ক্রিস্টোফার লেট

5

এটি আমার জন্য কাজ করেছে, উত্স: এখানে

আমার এই ত্রুটি ছিল এবং এটি ডিবি বাধার সাথে অন্তত ছিল না (অন্তত আমার ক্ষেত্রে)। আমার কাছে getRecord ক্যোয়ারী সহ একটি .xsd ফাইল রয়েছে যা একটি গ্রুপের রেকর্ড দেয়। সেই টেবিলের একটি কলাম ছিল "এনভারচর (512)" এবং প্রকল্পের মাঝখানে আমার এটি পরিবর্তন করে "এনভারচার (ম্যাক্স)" করতে হবে।

যতক্ষণ না ব্যবহারকারী সেই ক্ষেত্রে 512 এর বেশি প্রবেশ করে এবং আমরা বিখ্যাত ত্রুটি বার্তাটি পেতে শুরু করি "সীমাবদ্ধতা সক্ষম করতে ব্যর্থ One

সমাধান: আপনার ডেটা টেবিলের কলামগুলির সমস্ত ম্যাক্স দৈর্ঘ্য সম্পত্তি পরীক্ষা করুন।

আমি যে কলামটি "এনভারচর (512)" থেকে "এনভারচচার (ম্যাক্স)" তে পরিবর্তিত করেছি তারপরেও ম্যাক্সেলংয়ের সম্পত্তিতে 512 মান ছিল তাই আমি "-1" এ পরিবর্তিত হয়েছি এবং এটি কার্যকর হয় !!


আমার ইস্যুটিও অবশ্যই ম্যাক্সলেংথ হওয়া উচিত। আমি ভিডাব্লুডি 2010 ডেটাসেট ডিজাইনার ব্যবহার করি। উত্স সারণী অন্য কেউ পরিবর্তন করেছেন। আমি এসকিউএল ক্যোয়ারিতে পরিবর্তন করেছি select *, এই ভেবে যে সমস্ত কলাম রিফ্রেশ হবে, তবে দৃশ্যত এটি বিদ্যমান দৈর্ঘ্য আপডেট করে নি। সুতরাং আমি একটি ক্ষেত্র নির্বাচন করার জন্য ক্যোয়ারীটি সংশোধন করেছি, .xsd সংরক্ষণ করেছি, নোটপ্যাড ++ এ .xsd খুললাম তা পরীক্ষা করে দেখুন যে ম্যাক্সেলেন্থ ডিএফগুলির মধ্যে একটি ব্যতীত অন্য সমস্ত চলে গেছে, তারপরে আবার কোয়েরিতে পরিবর্তন করে select *। যা ম্যাক্সেলংথগুলি সতেজ করে এবং আমাকে এই ত্রুটিটি পেরিয়ে যায়।
মার্ক বেরি

আপনাকে অনেক ধন্যবাদ, সমস্ত কিছু ঠিকঠাক হিসাবে প্রতিবেদন করার কারণে আমি সারা দিন এটির উপর আমার মাথা আঁচড়ান। আমাকেও এনভারচর (ম্যাক্স) এ পরিবর্তন করতে হয়েছিল, তবে ডেটা টেবিলটি ম্যাক্সলেংথকে 10 এ রেখেছিল! আমি তোমার কাছে একটি পানীয় owণী!
জন ডি

4

সমস্যাটি ডেটা অ্যাক্সেস ডিজাইনারের। ভিজ্যুয়াল স্টুডিওতে, যখন আমরা "সার্ভার এক্সপ্লোরার" থেকে ডিজাইনার উইন্ডোতে একটি ভিউ টানি, এটি এলোমেলোভাবে একটি কলামে একটি প্রাথমিক কী যুক্ত করে বা কিছুটা নট নূলে চিহ্নিত করছে যদিও এটি আসলে বাতিল হয়ে গেছে। যদিও এসকিউএল ডিবি সার্ভারে প্রকৃত দৃশ্য নির্মাণের কোনও প্রাথমিক কী সংজ্ঞায়িত করা হয়নি বা নাল নির্ধারিত নেই, ভিএস ডিজাইনার এই কী / সীমাবদ্ধতা যুক্ত করছেন।

আপনি এটি ডিজাইনারে দেখতে পারেন - এটি কলামের নামের বামে একটি মূল আইকন দিয়ে দেখানো হয়েছে।

সমাধান: কী আইকনে ডান ক্লিক করুন এবং 'মুছুন কী' নির্বাচন করুন। এই সমস্যার সমাধান করা উচিত। আপনি ভিএস ডেটা অ্যাক্সেস ডিজাইনারের একটি কলামের বৈশিষ্ট্যের তালিকা দেখতে এবং সঠিকভাবে মানগুলি পরিবর্তন করতে একটি কলামে ডান ক্লিক করতে পারেন এবং "সম্পত্তি" নির্বাচন করতে পারেন।


3

এই ত্রুটিটি আমার প্রকল্পেও প্রদর্শিত হয়েছিল। আমি এখানে পোস্ট করা সমস্ত প্রস্তাবিত সমাধান চেষ্টা করেছিলাম, তবে ভাগ্য ভাল না কারণ সমস্যার ক্ষেত্রের আকার, টেবিল কী ক্ষেত্রগুলির সংজ্ঞা, সীমাবদ্ধতা বা এনফোর্স কনস্ট্রাইটস ডেটাসেট ভেরিয়েবলের সাথে কোনও সম্পর্ক ছিল না।

আমার ক্ষেত্রে আমার কাছে .xsd অবজেক্টটি রয়েছে যা আমি প্রকল্প নকশা সময় (ডেটা অ্যাক্সেস লেয়ার) সময় রেখেছিলাম। আপনি যখন ডাটাবেস ভিজ্যুয়াল আইটেমটিতে আপনার ডাটাবেস টেবিল অবজেক্টগুলিকে টেনে আনেন, এটি অন্তর্নিহিত ডাটাবেস থেকে প্রতিটি টেবিল সংজ্ঞাটি পড়ে এবং আপনি যখন আপনার ডাটাবেসে সারণীগুলি তৈরি করেন তখন আপনি সেগুলি সংজ্ঞা হিসাবে ঠিক সেইভাবে সীমাবদ্ধতাগুলি অনুলিপি করে (আমার এসকিউএল সার্ভার ২০০৮ আর 2) কেস)। এর অর্থ হ'ল "নাল নয়" বা "বিদেশী কী" বাধা নিয়ে তৈরি প্রতিটি টেবিল কলামটি অবশ্যই আপনার এসকিউএল বিবৃতি বা সঞ্চিত পদ্ধতির ফলাফলের মধ্যে উপস্থিত থাকতে হবে।

আমি আমার কীগুলিতে সমস্ত কী কলাম এবং "নাল নয়" হিসাবে সংজ্ঞায়িত কলামগুলি অন্তর্ভুক্ত করার পরে সমস্যাটি পুরোপুরি অদৃশ্য হয়ে গেল।


3

আমি যখন AllowDBNullএক্সএসডি ফাইলের ডেটা টেবিলের একটি তারিখের ক্ষেত্রে সত্যে সেট করি তখন খনি কাজ শুরু করে ।


2

এটি সম্ভবত এক বা একাধিক কলামগুলি নির্বাচন করা হচ্ছে বলে মনে হচ্ছে:

   e.eval, e.batch_no, e.crsnum, e.lect_code, e.prof_course

AllowDBNull আপনার ডেটাসেটের সিদ্ধান্তে মিথ্যাতে সেট করেছে to


আমি এই টেবিলের সমস্ত কলামের জন্য নাল = সত্য রাখি তবে তা নিরর্থক।
কোনও নাম ডোনটকেয়ার

2

এটি কেন স্পষ্ট বিবৃতি চালানোর ক্ষেত্রে সীমাবদ্ধতা সক্রিয় করা উচিত তা স্পষ্ট নয়। আমি সি # বা সম্পর্কিত প্রযুক্তি জানি না, তবে আমি ইনফর্মিক্স ডেটাবেস জানি। যদি আপনার কোয়েরিং কোডটি সীমাবদ্ধ করে (এবং সম্ভবত এটি অক্ষমও করা হয়) সীমাবদ্ধ থাকলে সিস্টেমের সাথে অদ্ভুত কিছু চলছে।

আপনার পুরানো ফ্যাশনযুক্ত, অ-মানক ইনফর্মিক্স আউটারের যোগসূত্রটিও এড়ানো উচিত। আপনি যদি ইনফর্মিক্সের অসম্ভব পুরানো সংস্করণ ব্যবহার না করেন তবে আপনার এসকিউএল -২২ স্টাইলের সাথে যোগ দেওয়া উচিত।

আপনার প্রশ্নটি দুটি বাহ্যিক যোগদানের উল্লেখ করেছে বলে মনে হচ্ছে, তবে আপনি কেবল উদাহরণ ক্যোয়ারীতে একটি দেখান। সেটিও কিছুটা বিস্মিত।

' e' এবং বাকি টেবিলগুলির মধ্যে যোগ দেওয়ার শর্তগুলি :

AND c.crsnum = e.crsnum  
AND c.batch_no = e.batch_no  
AND d.lect_code= e.lect_code 

এটি একটি অস্বাভাবিক সমন্বয়। যেহেতু আমাদের কাছে সম্পর্কিত রেফারেন্সিয়াল অখণ্ডতার সীমাবদ্ধতার সাথে স্কিমার প্রাসঙ্গিক সাবসেট নেই, তাই এটি সঠিক কিনা তা জানা শক্ত, তবে এর মতো 3 টেবিলের মধ্যে যোগ হওয়া কিছুটা অস্বাভাবিক বিষয় is

এর কোনওটিই আপনার সমস্যার সুনির্দিষ্ট উত্তর নয়; তবে এটি কিছু দিকনির্দেশনা সরবরাহ করতে পারে।


2

এখন পর্যন্ত তৈরি সমস্ত ইনপুট জন্য আপনাকে ধন্যবাদ। আমি কেবল এটি যুক্ত করতে চাইছি যখন কেউ সাফল্যের সাথে ডিবিকে স্বাভাবিকীকরণ করতে পারে, তাদের অ্যাপ্লিকেশনটিতে কোনও স্কিমা পরিবর্তন আপডেট করে (যেমন ডেটাসেটে) বা তাই, এর আরও একটি কারণও রয়েছে: স্ক্যুয়াল কার্টেসিয়ান পণ্য (প্রশ্নের সারণিতে যোগদানের সময়)।

কার্টেসিয়ান ক্যোয়ারী ফলাফলের অস্তিত্বের কারণে দু'তবার বেশি টেবিলের প্রাথমিক (বা কী প্রথম) সারণীতে সদৃশ রেকর্ড তৈরি হবে। আপনি এসকিউএল-তে একটি "কোথায়" ধারাটি নির্দিষ্ট করে থাকলেও, কার্টেসিয়ান এখনও ঘটতে পারে যদি সেকেন্ডারি টেবিলের সাথে যোগদানের ক্ষেত্রে অসম যোগদান থাকে (2 বা ততোধিক সম্পর্কযুক্ত টেবিল থেকে ডেটা পাওয়ার জন্য দরকারী):

TbFirst.references_str <> tbSystem.systemKey_str থেকে টিবি ফার্স্ট ইনার জয়েন টিবি সিস্টেমটিতে যোগ দিন

এর জন্য সমাধান: টেবিলগুলি সম্পর্কিত হওয়া উচিত।

ধন্যবাদ। chagbert


1

এটিকে মিথ্যা থেকে সত্যে পরিবর্তন করে আমি একই সমস্যার সমাধান করেছি। শেষ পর্যন্ত আমি ডাটাবেসে গিয়ে আমার বিট ফিল্ডটি নালার অনুমতিতে পরিবর্তন করে দিয়ে আমার এক্সএসডি সতেজ করে আমার ডাব্লুএসডিএল এবং রেফারেন্স.সি.কে রিফ্রেশ করে এখন সব ঠিক আছে।

this.columnAttachPDFToEmailFlag.AllowDBNull = true;

1

সংক্ষিপ্ত এবং সহজ সমাধান:

এমএসএসকিউএল স্টুডিও সেভারে যান;

এই ত্রুটির কারণ অনুসন্ধান করুন: আমার ক্ষেত্রে আমি দেখতে পাই যে আইডি মানটি নালাগুলি কারণ আমি আইডেন্টিটি স্পেসিফিকেশন ইনক্রিমেন্ট 1 দ্বারা সেট করতে ভুলে গেছি।

এখানে চিত্র বর্ণনা লিখুন

সুতরাং আইডি ক্ষেত্রটির জন্য এটি 1 স্বতঃআগ্রহক হিসাবে প্রবেশ করিয়েছে এবং সংশোধন করে নূরের দৃষ্টিভঙ্গিতে অনুমতি দেবে না

এখানে চিত্র বর্ণনা লিখুন

এই ত্রুটিটিই এই কোডটিতে আমার বাইন্ডিংসোর্স এবং টেবিল অ্যাডাপ্টার থ্রোইন ত্রুটির কারণ করেছিল:

   this.exchangeCheckoutReportTableAdapter.Fill(this.sbmsDataSet.ExchangeCheckouReportTable);

0

DirectCast (dt.Rows (0), DataRow) .RowError

এটি সরাসরি ত্রুটি দেয়


2
ভাল পরামর্শ, কিন্তু এটি কেবল তখনই কাজ করে যদি এটি ডেটাটেবলের প্রথম সারি হয় যার ত্রুটি রয়েছে, তাই না? যদি 100 টি ভাল সারিগুলি ফেরত দেওয়া হয় এবং তারপরে 1 টি খারাপ সারি RowErrorহয় Rows(0), তবে সেখানে কি হবে না?
পলস্টক

0

আপনি যদি ডেটা টেবিলটি পেতে ভিজ্যুয়াল স্টুডিও ডেটাসেট ডিজাইনার ব্যবহার করছেন এবং এটি 'সীমাবদ্ধতা সক্ষম করতে ব্যর্থ হয়েছে' ত্রুটি ছুড়ে দিচ্ছে। আমি একই সমস্যার মুখোমুখি হয়েছি, নিজেই ডেটাসেট ডিজাইনার থেকে ডেটা পূর্বরূপ দেখার চেষ্টা করুন এবং এটি আপনার ডাটাবেসের ভিতরে টেবিলের সাথে মেলে।

এই সমস্যাটি সমাধান করার সর্বোত্তম উপায় হ'ল টেবিল অ্যাডাপ্টারটি মুছে ফেলা এবং পরিবর্তে একটি নতুন তৈরি করা।


0

* দ্বিতীয় উপায়: *


প্রাথমিক কী হিসাবে আপনার যদি [আইডি] প্রয়োজন হয় না,

এর প্রাথমিক কী বৈশিষ্ট্যটি সরান:

আপনার ডেটাসেটে> টেবিলএডাপ্টার> [আইডি] কলামে ডান ক্লিক করুন> কী মুছুন নির্বাচন করুন ...

সমস্যা ঠিক হয়ে যাবে।


0

আমারও এই সমস্যা ছিল এবং অন্তর্নিহিত এসকিউএল সার্ভারে পরিবর্তিত কলামটির পরিবর্তিত আকার প্রতিফলিত করার জন্য * .xsd সংশোধন করার পরে এটি সমাধান করা হয়েছিল।


0

এই ত্রুটিটি সমাধানের জন্য, আমি ডেটাসেট ডিজাইনারের কাছ থেকে ঝামেলা সারণী অ্যাডাপ্টারটি কেড়ে নিয়েছিলাম এবং ডেটাসেটটি সংরক্ষণ করে সার্ভার এক্সপ্লোরার থেকে টেবিল অ্যাডাপ্টারের একটি নতুন কপি টেনে নিয়ে এসেছি এবং এটি ঠিক করে দিয়েছে


0

আমি এক্সএমএল পাঠক দ্বারা .xsd ফাইলটি খোলার মাধ্যমে এবং আমার একটি দৃশ্যে রাখা সীমাবদ্ধতা মোছার মাধ্যমে এই সমস্যার সমাধান করেছি। যে কোনও কারণে আমি যখন ডেটাতে ভিউটি যুক্ত করেছি তখন এটি কলামগুলির একটিতে প্রাথমিক কী সীমাবদ্ধতা যুক্ত করেছিল যখন এমনটি হওয়া উচিত ছিল না।

অন্য উপায়টি হ'ল .xsd ফাইলটি সাধারণত খোলার জন্য, টেবিলটি দেখুন / সমস্যাটি দেখা দেয় এবং সমস্যাগুলি তৈরি করে এমন কোনও কী (ডান ক্লিক করুন কলাম, নির্বাচন করুন delete key) মুছুন that


0

উপরের তালিকাভুক্তদের ব্যতিক্রমের জন্য কেবলমাত্র অন্য সম্ভাব্য কারণ যুক্ত করতে চান (বিশেষত এমন লোকদের জন্য যারা ম্যানুয়ালি ডেটাসেট স্কিমাকে সংজ্ঞায়িত করতে পছন্দ করেন):

যখন আপনার ডেটাসেটে আপনার দুটি টেবিল রয়েছে এবং সেখানে DataSet.Reletions.Add()প্রথম টেবিলের ক্ষেত্র ( chfield) থেকে দ্বিতীয় সারণীর ক্ষেত্রের ( ) থেকে সংযুক্তি ( pfield) রয়েছে, সেখানে ক্ষেত্রটিতে একটি অন্তর্নিহিত বাধা যুক্ত করা হলেও এটি অনন্য হতে পারে আপনার সংজ্ঞায় যেমন স্পষ্টভাবে নির্দিষ্ট করা হয়েছে তেমন অনন্য বা প্রাথমিক কী হিসাবে নয়।

ফলস্বরূপ, আপনার প্যারেন্ট ফিল্ডে পুনরাবৃত্ত মানগুলির সাথে সারি থাকা উচিত ( pfield) আপনিও এই ব্যতিক্রমটি পাবেন।


0
            using (var tbl = new DataTable())
            using (var rdr = cmd.ExecuteReader())
            {
                tbl.BeginLoadData();

                try
                {
                    tbl.Load(rdr);
                }
                catch (ConstraintException ex)
                {
                    rdr.Close();
                    tbl.Clear();

                    // clear constraints, source of exceptions
                    // note: column schema already loaded!
                    tbl.Constraints.Clear();
                    tbl.Load(cmd.ExecuteReader());
                }
                finally
                {
                    tbl.EndLoadData();
                }
            }

0

আমি একই ত্রুটির প্রকার পেয়েছি এবং আমার ক্ষেত্রে এটি নির্বাচন ক্ষেত্রগুলি সরিয়ে এবং * এর পরিবর্তে এটি সমাধান করেছে। কেন ঘটছে তা ধারণা নেই। ক্যোয়ারিতে কোনও টাইপস বা অভিনব কিছু ছিল না।

সেরা সমাধান নয় তবে অন্য কিছু কাজ করে নি এবং আমি ক্লান্ত হয়ে পড়ছিলাম।

স্পষ্ট উত্তরের জন্য আমার অনুসন্ধানে আমি এটিতে এটি পেয়েছি: https://www.codeproject.com/questions/45516/failed-to-enable-constraints-one-or-more-rows-cont

সমাধান 8

এই ত্রুটিটি আমার প্রকল্পে ভিজ্যুয়াল স্টুডিও 2010 ব্যবহার করেও দেখানো হয়েছিল I আমি অন্যান্য ব্লগে পোস্ট হওয়া অন্যান্য সমাধান চেষ্টা করেছিলাম, তবে ভাগ্য ভাল না কারণ সমস্যার ক্ষেত্রের আকার, টেবিল কী ক্ষেত্রগুলির সংজ্ঞা, সীমাবদ্ধতা বা EnforceConstraintsডেটাসেট ভেরিয়েবলের সাথে কোনও সম্পর্ক ছিল না ।

আমার ক্ষেত্রে আমার কাছে .xsd অবজেক্ট রয়েছে যা আমি প্রকল্প নকশা সময় (ডেটা অ্যাক্সেস লেয়ারে) রেখেছিলাম। আপনি যখন ডাটাবেস ভিজ্যুয়াল আইটেমটিতে আপনার ডাটাবেস টেবিল অবজেক্টগুলিকে টেনে আনেন, এটি অন্তর্নিহিত ডাটাবেস থেকে প্রতিটি টেবিল সংজ্ঞাটি পড়ে এবং Datasetআপনি যখন আপনার ডাটাবেসে টেবিলগুলি তৈরি করেছিলেন তখন আপনি সেগুলি সংজ্ঞা হিসাবে ঠিক ঠিক তেমন প্রতিবন্ধকে অনুলিপি করেছেন (আমার ক্ষেত্রে এসকিউএল সার্ভার ২০০৮ আর 2) )। এর অর্থ হ'ল "নাল নয়" বা "বিদেশী কী" বাধা নিয়ে তৈরি প্রতিটি টেবিল কলামটি অবশ্যই আপনার এসকিউএল বিবৃতি বা সঞ্চিত পদ্ধতির ফলাফলের মধ্যে উপস্থিত থাকতে হবে।

আমি আমার বাধা সমস্ত কলাম (নাল নয়, প্রাথমিক কী, বিদেশী কী, ইত্যাদি) অন্তর্ভুক্ত করার পরে সমস্যাটি সম্পূর্ণ অদৃশ্য হয়ে গেল।

সম্ভবত আপনার প্রশ্নের সঞ্চিত / সঞ্চিত প্রক্রিয়া ফলাফলের জন্য উপস্থিত সমস্ত টেবিল কলামের প্রয়োজন হবে না, তবে সীমাবদ্ধতাগুলি এখনও প্রয়োগ করা হয়েছে ফলে যদি কিছু বাধা কলাম ফলাফলটিতে উপস্থিত না হয় তবে ত্রুটি দেখানো হয়।

আশাকরি এটি কাউকে সাহায্য করবে।


-1

আমার ক্ষেত্রে এই ত্রুটিটি স্ট্রিং কলামের আকার দ্বারা উস্কে দেওয়া হয়েছিল। অদ্ভুত কি ছিল যখন আমি বিভিন্ন সরঞ্জামে একই একই ক্যোয়ারীটি সম্পাদন করি, পুনরাবৃত্তি মান বা নাল মান ছিল না।

তারপরে আমি আবিষ্কার করেছি যে স্ট্রিং কলামের আকার 50 ছিল তাই যখন আমি ফিল পদ্ধতিটি বলি তখন এই ব্যতিক্রমটি ছুঁড়ে দিয়ে মূল্য কেটে নেওয়া হয়েছিল।
আমি কলামে ক্লিক করুন এবং বৈশিষ্ট্যগুলিতে আকার 200 এ সেট করলাম এবং ত্রুটিটি চলে গেল।

এই সাহায্য আশা করি


-1

আমি এই সমস্যাটিকে এর মতো "সাবলেট" করে সমাধান করেছি:

string newQuery = "select * from (" + query + ") as temp";

এটি যখন মাইএসকিএল-এ করবেন, সমস্ত সংঘবদ্ধ বৈশিষ্ট্য (অনন্য, নন-নাল ...) সাফ হয়ে যাবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.