নুলকে অনুমতি দেওয়ার জন্য আমি কীভাবে একটি মাইএসকিউএল কলাম পরিবর্তন করব?


396

মাইএসকিউএল 5.0.45

কোনও কলামটি শূন্য হতে দেওয়ার জন্য টেবিল পরিবর্তন করার সিনট্যাক্স কী, পর্যায়ক্রমে এর সাথে কী সমস্যা আছে:

ALTER mytable MODIFY mycolumn varchar(255) null;

আমি ম্যানুয়ালটিকে কেবল উপরেরটি চালিত হিসাবে ব্যাখ্যা করেছি এবং এটি কলামটি পুনরায় তৈরি করবে, এবার নਾਲকে অনুমতি দেবে। সার্ভারটি আমাকে বলছে আমার সিনট্যাক্টিকাল ত্রুটি রয়েছে। আমি শুধু তাদের দেখতে পাচ্ছি না।


কলামটি অনন্য নয় বা এর মতো অন্য কিছু নয়
zmf

উত্তর:


599

আপনি নিম্নলিখিত চান:

ALTER TABLE mytable MODIFY mycolumn VARCHAR(255);

কলামগুলি ডিফল্টরূপে নমনীয়। কলাম হিসাবে দীর্ঘ ঘোষণা করা হয় UNIQUEবা NOT NULLসেখানে কোন সমস্যা হওয়ার কথা নয়।


14
TIMESTAMPপ্রকারের ক্ষেত্রে একটি প্রান্তের কেস রয়েছে যা আপনার মাইএসকিউএল সংস্করণ এবং কনফিগারেশনের উপর নির্ভর করে @ কনরোয়পি দ্বারা প্রস্তাবিত হিসাবে NOT NULLনির্দিষ্ট NULLকরা যেতে পারে আরও সঠিক।
ম্যাথু বিকেট

1
এটি আমার পক্ষে কাজ করে না! কলামটি পরিবর্তন হয়নি। হতে পারে কারণ আমার অন্য একটি টেবিলের প্রতিবন্ধকতা ছিল যেখানে কলামটি ব্যবহৃত হয়েছিল (যখন নাল নয়)।
রোকলোগো

250

আপনার বাক্য গঠন ত্রুটিটি ক্যোয়ারীতে একটি "টেবিল" অনুপস্থিত

ALTER TABLE mytable MODIFY mycolumn varchar(255) null;

26
এটি প্রকৃতপক্ষে সঠিক উত্তর - যদিও NULL ধারাটির প্রয়োজন নেই, সরবরাহ করার ক্ষেত্রে কোনও দোষ নেই। অল্টার টেবিল বিবৃতি থেকে টেবিল অনুপস্থিত ছিল আসল সমস্যা।
স্যামস্টেফেন্স

@ সামস্টেফেনস এবং জোফো: এখানে একটি প্রাথমিক এবং মাধ্যমিক ("পর্যায়ক্রমে") প্রশ্ন রয়েছে। এটি মাধ্যমিক প্রশ্নের সঠিক উত্তর যখন স্বীকৃত উত্তরটি প্রাথমিক প্রশ্নের সঠিক উত্তর।
jdunk

@ স্যামস্টেফেন্স কেবলমাত্র সরবরাহের ক্ষেত্রে কোনও ভুল নেই NULLবলে, এই উত্তরটি গ্রহণযোগ্য উত্তরের চেয়ে আরও "সঠিক" করে না? কলামগুলি ডিফল্টরূপে নমনীয় (জেনে নেওয়া উত্তর হিসাবে উল্লিখিত) এই নির্দিষ্ট প্রশ্নের ক্ষেত্রে সহায়ক is
rybo111

ওপি জানে না কেন তাদের বক্তব্য কার্যকর হয়নি। এই উত্তর কেন তা ব্যাখ্যা করে।
স্যামস্টেফেনস

28

আমার সমাধান:

ALTER TABLE table_name CHANGE column_name column_name type DEFAULT NULL

উদাহরণ স্বরূপ:

ALTER TABLE SCHEDULE CHANGE date date DATETIME DEFAULT NULL;


3

আমার সমাধান @ কৃষ্ণরোহিতের সমান:

ALTER TABLE `table` CHANGE `column_current_name` `new_column_name` DATETIME NULL;

আমি আসলে কলামটি সেট করেছিলাম NOT NULLকিন্তু উপরের প্রশ্নের সাথে এটিতে পরিবর্তন করা হয়েছিল NULL

পিএস আমি এটি একটি পুরানো থ্রেড জানি কিন্তু কেউ এটি স্বীকারও করে বলে মনে হয় না CHANGEalso


-5

ব্যবহার করুন: ALTER TABLE mytable MODIFY mycolumn VARCHAR(255);


18
আপনার উত্তরটি অন্য উত্তরের উপরে অতিরিক্ত মান সরবরাহ করা ভাল better এই ক্ষেত্রে, আপনার উত্তর অতিরিক্ত মূল্য সরবরাহ করে না, যেহেতু ড্যানিয়েল স্পিয়াক ইতিমধ্যে সমাধানটি পোস্ট করেছে। যদি পূর্বের উত্তরটি আপনার পক্ষে সহায়ক ছিল, আপনার যথেষ্ট সুনামের পরে আপনি এটি দিয়েছিলেন
লুস ক্রুজ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.