আমি এটি একটি সম্প্রদায় উইকি হিসাবে চিহ্নিত করেছি তাই আপনার অবসর সময়ে বিনা দ্বিধায় সম্পাদনা করুন।
২০৩৮ সালের সমস্যাটি আসলে কী?
"বছর 2038 সমস্যা (ওয়াই 2 কে সমস্যার সাথে সাদৃশ্য হিসাবে ইউনিক্স মিলেনিয়াম বাগ, ওয়াই 2 কে 38 নামে পরিচিত) 2038 এর আগে বা আগে কিছু কম্পিউটার সফ্টওয়্যার ব্যর্থ হতে পারে The সমস্যাটি এমন সমস্ত সফ্টওয়্যার এবং সিস্টেমগুলিকে প্রভাবিত করে যা সিস্টেম সময়কে স্বাক্ষরিত 32 হিসাবে প্রভাবিত করে বিট পূর্ণসংখ্যা, এবং এই সংখ্যাটি 1 জানুয়ারী, 1970 এর সময় 00:00:00 ইউটিসি থেকে সেকেন্ডের সংখ্যা হিসাবে ব্যাখ্যা করুন ""
কেন এটি ঘটে এবং যখন ঘটে তখন কী ঘটে?
তার পরেও টাইমস মঙ্গলবার 03:14:07 ইউটিসি, 19 জানুয়ারী 2038 'চারপাশে মোড়ানো' হবে এবং এই কারণে একটি ঋণাত্মক সংখ্যা, যা এই সিস্টেমের বরং 2038. তুলনায় ডিসেম্বর 13, 1901 সালে একটি সময় হিসাবে ব্যাখ্যা করবে অভ্যন্তরীণভাবে সংরক্ষণ করা সত্য যে UNIX পর্বের পর থেকে (সেকেন্ডের সংখ্যা 1 জানুয়ারি 1970 00:00:00 GMT) 32-বিট স্বাক্ষরিত পূর্ণসংখ্যার জন্য কম্পিউটারের সর্বাধিক মান অতিক্রম করবে।
আমরা কীভাবে এটি সমাধান করব?
- দীর্ঘ ডেটা ধরণের ব্যবহার করুন (b৪ বিট যথেষ্ট)
- মাইএসকিউএল (বা মারিয়াডিবি) এর জন্য, যদি আপনার সময় প্রয়োজন না হয় তবে
DATE
কলামের ধরণটি ব্যবহার করে বিবেচনা করুন । আপনার যদি উচ্চতর নির্ভুলতার প্রয়োজন হয় তবে তার DATETIME
পরিবর্তে ব্যবহার করুন TIMESTAMP
। সাবধান হোন যে DATETIME
কলামগুলি সময় অঞ্চল সম্পর্কে তথ্য সঞ্চয় না করে, তাই আপনার অ্যাপ্লিকেশনটি জানতে হবে কোন টাইমজোনটি ব্যবহৃত হয়েছিল।
- উইকিপিডিয়ায় বর্ণিত অন্যান্য সম্ভাব্য সমাধান
- এক দশক আগে রিপোর্ট হওয়া এই বাগটি ঠিক করতে মাইএসকিউএল ডিভাসের জন্য অপেক্ষা করুন ।
এটি ব্যবহারের জন্য কি কোনও সম্ভাব্য বিকল্প রয়েছে, যা অনুরূপ সমস্যা সৃষ্টি করে না?
ডাটাবেসগুলিতে তারিখগুলি সংরক্ষণের জন্য বড় ধরণের ব্যবহারের জন্য যেখানেই সম্ভব চেষ্টা করুন: -৪-বিট যথেষ্ট - জিএনইউ সি এবং পসিক্স / এসওএস, বা sprintf('%u'...)
পিএইচপি বা বিসিএমথ এক্সটেনশনে একটি দীর্ঘ দীর্ঘ টাইপ ।
2038-এ আমরা এখনও না হলেও কিছু ব্যবহারের সম্ভাব্য পরিস্থিতি কী?
সুতরাং একটি মাইএসকিউএল DATETIME এ 1000-9999 একটি সীমার আছে, কিন্তু TIMESTAMP এ শুধুমাত্র 1970-2038 একটি সীমার হয়েছে। যদি আপনার সিস্টেমের জন্ম তারিখ, ভবিষ্যতের আগাম তারিখগুলি (যেমন 30 বছরের বন্ধক), বা অনুরূপ, আপনি ইতিমধ্যে এই বাগটিতে চালাবেন run আবার, যদি সমস্যা হতে চলেছে তবে টাইমস্ট্যাম্প ব্যবহার করবেন না।
সত্যই ঘটে যাওয়া তথাকথিত সমস্যাটি এড়াতে আমরা বিদ্যমান অ্যাপ্লিকেশনগুলি যা টাইমস্ট্যাম্প ব্যবহার করে তাদের কী করতে পারি?
কিছু পিএইচপি অ্যাপ্লিকেশনগুলি এখনও 2038 এর মধ্যে থাকবে, যদিও ওয়েবে সম্ভবত কোনও উত্তরাধিকারের প্ল্যাটফর্মের আগেই ধারণা করা শক্ত।
রূপান্তর TIMESTAMP
করার জন্য একটি ডাটাবেস টেবিল কলাম পরিবর্তন করার জন্য এখানে একটি প্রক্রিয়া DATETIME
। এটি একটি অস্থায়ী কলাম তৈরি করে শুরু হয়:
# rename the old TIMESTAMP field
ALTER TABLE `myTable` CHANGE `myTimestamp` `temp_myTimestamp` int(11) NOT NULL;
# create a new DATETIME column of the same name as your old column
ALTER TABLE `myTable` ADD `myTimestamp` DATETIME NOT NULL;
# update all rows by populating your new DATETIME field
UPDATE `myTable` SET `myTimestamp` = FROM_UNIXTIME(temp_myTimestamp);
# remove the temporary column
ALTER TABLE `myTable` DROP `temp_myTimestamp`
সম্পদ