কেবলমাত্র একটি অটো কলাম থাকতে পারে


104

আমি মাইএসকিউএল থেকে ত্রুটিটি কীভাবে সংশোধন করব 'আপনার কেবলমাত্র একটি অটো ইনক্রিমেন্ট কলাম থাকতে পারে'।

CREATE TABLE book (
   id INT AUTO_INCREMENT NOT NULL,
   accepted_terms BIT(1) NOT NULL,
   accepted_privacy BIT(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

উত্তর:


119

আমার মাইএসকিউএল বলেছে "ভুল সারণী সংজ্ঞা; কেবল একটি অটো কলাম থাকতে পারে এবং এটি অবশ্যই একটি কী হিসাবে সংজ্ঞায়িত করা উচিত " সুতরাং যখন আমি প্রাথমিক কী যুক্ত করেছি নীচে এটি কাজ করা শুরু করেছে:

CREATE TABLE book (
   id INT AUTO_INCREMENT NOT NULL,
   accepted_terms BIT(1) NOT NULL,
   accepted_privacy BIT(1) NOT NULL,
   primary key (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

6
কলামটি একটি সংমিশ্রিত কীটির অংশ হলে কার্যকারণের সঠিক পাঠ্যক্রম কী?
নুবাকেকে

টেবিলটি পরিবর্তন করার সময় সিনট্যাক্সটি কী?
মাইক হ্যারিসন

2
@ মাইকহ্যারিসন দেখে মনে হচ্ছে আপনি ঠিক রাখতে পারেন ALTER TABLE book ADD id INT AUTO_INCREMENT NOT NULL, ADD PRIMARY KEY (id);
সাক্সুর

34

সম্পূর্ণ ত্রুটি বার্তা শোনায়:

ত্রুটি 1075 (42000): ভুল সারণী সংজ্ঞা; শুধুমাত্র একটি অটো কলাম থাকতে পারে এবং এটি অবশ্যই একটি কী হিসাবে সংজ্ঞায়িত করা উচিত

তাই যোগ primary keyকরার auto_incrementক্ষেত্র:

CREATE TABLE book (
   id INT AUTO_INCREMENT primary key NOT NULL,
   accepted_terms BIT(1) NOT NULL,
   accepted_privacy BIT(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

13

এছাড়াও মনে রাখবেন যে "কী" এর অর্থ প্রাথমিক কী বোঝায় না । এর মতো কিছু কাজ করবে:

CREATE TABLE book (
    isbn             BIGINT NOT NULL PRIMARY KEY,
    id               INT    NOT NULL AUTO_INCREMENT,
    accepted_terms   BIT(1) NOT NULL,
    accepted_privacy BIT(1) NOT NULL,
    INDEX(id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

এটি একটি স্বীকৃত উদাহরণ এবং সম্ভবত সেরা ধারণা নয়, তবে এটি নির্দিষ্ট ক্ষেত্রে খুব কার্যকর হতে পারে।


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

2
@ মাতিয়াস না, আমি বিশ্বাস করি না যে কোনও বিশেষ ঝুঁকি আছে। এটি ইচ্ছাকৃতভাবে সমর্থনযোগ্য, অটো কলামটি মূলত কনভেনশন (এবং সরলতার জন্য) দ্বারা প্রাথমিক কী হয়ে উঠেছে।
ম্যাথু

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