মাইএসকিউএল 5.5-এ CURRENT_TIMESTAMP এ ডিফল্ট তারিখ দিতে পারে না


18

আমি Current_timestampডিফল্ট মান হিসাবে সেট করতে সক্ষম নই । আমার Mysqlসংস্করণটি 5.5.47

প্রশ্ন হল

ALTER TABLE `downloads` ADD `date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ;

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

এটি আমার স্থানীয় ডিবি দিয়ে কাজ করছে mysql V5.6.56


মাইএসকিএল নতুন সংস্করণগুলিতে ডিফল্ট মানটিতে মাইক্রোসেকেন্ড যুক্ত হওয়ার কারণে সমস্যা। সমাধানের জন্য tekina.info/… দেখুন ।
অনিকেত সিং

উত্তর:


25

থেকে মাইএসকিউএল 5.5 ম্যানুয়াল :

আপনি এখন () বা CURRENT_DATE এর মতো কোনও ফাংশনের মান হিসাবে তারিখ কলামের জন্য ডিফল্ট সেট করতে পারবেন না। ব্যতিক্রম হ'ল আপনি একটি TIMESTAMP কলামের জন্য ডিফল্ট হিসাবে CURRENT_TIMESTAMP নির্দিষ্ট করতে পারেন।

সুতরাং, আপনি যা অর্জন করতে চান তা যদি আপনি কোনও TIMESTAMPকলামের পরিবর্তে একটি কলাম যুক্ত করেন তবে মাইএসকিউএল 5.5 এ কাজ করবে DATE

5.6.x এর পরিবর্তনগুলি যা কার্যকারিতাটির অনুমতি দেয় এখানে ডকুমেন্টেড রয়েছে এবং আমি সম্পূর্ণতার জন্য প্রাসঙ্গিক সংক্ষিপ্তসারটি উদ্ধৃত করছি:

মাইএসকিউএল ৫..6.৫ অনুসারে, টাইমস্ট্যাম্প এবং ডেটটাইম কলামগুলি স্বয়ংক্রিয়ভাবে বর্তমান তারিখ এবং সময় (যা বর্তমান টাইমস্ট্যাম্প) আপডেট করা যেতে পারে। 5.6.5 এর আগে, এটি কেবলমাত্র টাইমস্ট্যাম্পের জন্য, এবং প্রতি টেবিলে সর্বাধিক এক টাইমস্ট্যাম্প কলামের জন্য সত্য।


8

এই উত্তরটি পরীক্ষা করুন ।

আপনার বিকল্পগুলি হ'ল:

  • মাইএসকিউএল 5.6.5 এ আপগ্রেড করুন
  • কলামের ধরণটি TIMESTAMP তে পরিবর্তন করুন, যেমন:

    ALTER TABLE `downloads` ADD `date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ;
  • একটি ট্রিগার তৈরি করুন যা কলামটি স্বয়ংক্রিয়ভাবে আপডেট হয়:

    ALTER TABLE `downloads` ADD `date` DATETIME NULL; -- date must allow
                                                      -- NULLs or default
                                                      -- to a special value
    DROP TRIGGER IF EXISTS downloads_BI;
    DELIMITER //
    CREATE TRIGGER downloads_BI
    BEFORE INSERT ON downloads FOR EACH ROW
    BEGIN
        IF (NEW.date IS NULL) THEN -- change the isnull check for the default used
            SET NEW.date = now();
        END IF;
    END//
    DELIMITER ;
    

    আপনি যদি আপডেটের সাথে স্বয়ংক্রিয়ভাবে আপডেট হওয়া বা নাল মানগুলি প্রতিরোধ করতে চান তবে আপনি একটি আপডেট মানও তৈরি করতে চাইতে পারেন।

    mysql> INSERT INTO downloads (i) VALUES (1); -- I do not set date
    Query OK, 1 row affected (0.00 sec)
    
    mysql> SELECT * FROM downloads;
    +------+---------------------+
    | i    | date                |
    +------+---------------------+
    |    1 | 2016-03-22 09:27:52 |
    +------+---------------------+
    1 row in set (0.00 sec)
    
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.