mysql - convert_tz शून्य शून्य देता है




ubuntu-12.04 convert-tz (6)

मुझे पता है कि यह बेवकूफ लगता है, लेकिन जब मैं उपयोग करता हूं

SELECT CONVERT_TZ('2004-01-01 12:00:00','UTC','Asia/Jakarta') AS time

यह नल आउटपुट करता है। मैं उबंटू 12.04 64 बिट में MySQL वर्कबेंच का उपयोग कर रहा हूं, और यह मेरे अन्य लैपटॉप / ओएस में भी काम करता है (MySQL वर्कबेंच का उपयोग भी)।


1) विंडोज़ में, C:\Program Files\MySQL\ में अन्य उत्तरों के रूप में अब कोई डेटा फ़ोल्डर नहीं है।

2) उस स्थिति में, C:\ProgramData\MySQL\MySQL Server 5.x\Data\mysql । आम तौर पर यह फ़ोल्डर छिपा हुआ है और आपको C:\ProgramData\ कुछ बार नहीं दिखाई देगा।

3) यहां वर्णित छिपी हुई फाइलों और फ़ोल्डरों को देखने के लिए दृश्य टैब में सेटिंग बदलें https://irch.info/index.php?pg=kb.page&id=133

4) विंडोज स्टार्ट बटन में "सेवाओं" की खोज करके MySQL सेवा को रोकें।

5) फिर timezone_2017c_posix.zip को अनजिप करें और उसके बाद फ़ाइलों को कॉपी करें (फ़ाइलों को सीधे कॉपी करें, पूरे फ़ोल्डर को कॉपी न करें), और C:\ProgramData\MySQL\MySQLServer5.x\Data\mysql\

6) MySQL 5.7 के लिए, timezone_2017c_posix.zip अनजिप करने के बाद बस एक .sql फ़ाइल देगा और यह समस्या हल नहीं कर सकता है। तो आगे बढ़ें और 5.6 के लिए ज़िप फ़ाइल डाउनलोड करें भले ही आप MySQL 5.7 चला रहे हों और उन फ़ाइलों को C:\ProgramData\MySQL\MySQL Server 5.x\Data\mysql\

7) MySQL सर्वर को पुनरारंभ करें। यह जांचने के लिए कि CONVERT_TZ () काम कर रहा है, इस SQL ​​क्वेरी को चलाएं।

SELECT CONVERT_TZ('2004-01-01 12:00:00','UTC','Asia/Jakarta'); और गैर-शून्य आउटपुट की जांच करें।


ऐसा तब होगा जब आपने समय क्षेत्र तालिका को mysql में लोड नहीं किया है।

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

यदि आप विंडोज़ पर MySQL का उपयोग कर रहे हैं तो आपको टाइमस्ऑन डेटा को mysql स्कीमा में लोड करना होगा। यहां एक अच्छा हाउटो है: http://www.geeksengine.com/article/populate-time-zone-data-for-mysql.html

यदि आप ऐसा नहीं करते हैं, तो फ़ंक्शन CONVERT_TZ आपके इनपुट टाइमज़ोन (यानी आपके उदाहरण: 'यूटीसी', 'एशिया / जकार्ता') को पहचान नहीं पाएगा, और केवल शून्य लौटाएगा।


यदि आप विंडोज़ में हैं और MySQL 5.7 का उपयोग कर रहे हैं तो यह काम करने के लिए ये चरण हैं।

  1. मेरा कंप्यूटर / कंप्यूटर / इस पीसी पर राइट क्लिक करें या जो भी आपके ओएस में नाम है और गुण चुनें।
  2. बाएं पैनल से "उन्नत सिस्टम सेटिंग्स" चुनें।
  3. "पर्यावरण चर" चुनें, अपनी MySQL बिन निर्देशिका का पूरा पथ नाम दर्ज करें (आमतौर पर यह होगा, सी: \ प्रोग्राम फ़ाइलें \ MySQL \ MySQL सर्वर 5.7 \ bin)।
  4. Cmd प्रॉम्प्ट खोलें, mysql -u root -p password का उपयोग कर mysql -u root -p password में दर्ज करें।
  5. MySQL डीबी का चयन करने के use mysql का use mysql करें।
  6. https://dev.mysql.com/downloads/timezones.html से "timezone_YYYYc_posix_sql.zip" फ़ाइल डाउनलोड करें (YYYY के स्थान पर, उस पृष्ठ में उपलब्ध अधिकतम वर्ष 2017 या 2018 जैसे)।
  7. इसे निकालें और फ़ाइल को टेक्स्ट एडिटर में खोलें।
  8. सामग्री की प्रतिलिपि बनाएँ और cmd प्रॉम्प्ट में निष्पादित करें।

सफल समापन पर, आप CONVERT_TZ और अन्य टाइमज़ोन फ़ंक्शंस का उपयोग करने में सक्षम होना चाहिए।


एमएएमपी प्रो

  1. ओपन Terminal
  2. cd /usr/share/zoneinfo/
  3. sudo mv +VERSION ~/Desktop
  4. cd /applications/MAMP/Library/bin
  5. sudo ./mysql_tzinfo_to_sql /usr/share/zoneinfo | ./mysql -p -u root mysql
  6. sudo mv ~/Desktop/+VERSION /usr/share/zoneinfo/

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

यदि आपको data too long for column 'abbreviation' at row 1 त्रुटि data too long for column 'abbreviation' at row 1 लगता है तो देखें: https://bugs.mysql.com/bug.php?id=68861

फिक्स निम्नलिखित को चलाने के लिए होगा

यह mysql मोड को अक्षम करने के लिए एक लाइन जोड़ देगा और mysql को कटा हुआ डेटा डालने की अनुमति देगा, यह एक mysql बग के कारण था जहां mysql अंत में एक शून्य वर्ण जोड़ देगा (उपरोक्त लिंक के अनुसार)

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
(if the above gives error "data too long for column 'abbreviation' at row 1")
mysql_tzinfo_to_sql /usr/share/zoneinfo > /tmp/zut.sql

echo "SET SESSION SQL_MODE = '';" > /tmp/mysql_tzinfo_to.sql
cat /tmp/zut.sql >> /tmp/mysql_tzinfo_to.sql

mysql --defaults-file=/etc/mysql/my.cnf --user=verifiedscratch -p mysql < /tmp/mysql_tzinfo_to.sql




convert-tz