2013-08-13 18 views
21

मैं अपने MySql उदाहरण में समय क्षेत्र लोड करने के लिए (कि Unbuntu पर चल रहा है) ताकि मैं CONVERT_TZ समारोह का उपयोग कर सकते प्रयास कर रहा हूँ लेकिन जब मैं नीचे कमांड चलाएँ:टाइमज़ोन लोड करने में असमर्थ?

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

मैं निम्नलिखित उत्पादन मिलता है और जब मैं

चेतावनी:: समय क्षेत्र के रूप में '/ usr/share/zoneinfo/एशिया/Riyadh87' लोड करने में असमर्थ CONVERT_TZ यह सिर्फ रिटर्न NULL अभी भी उपयोग करने के लिए प्रयास करें। इसे छोड़ना चेतावनी: समय क्षेत्र के रूप में '/ usr/share/zoneinfo/एशिया/रियाद 88' लोड करने में असमर्थ। इसे छोड़ना चेतावनी: समय जोन के रूप में '/ usr/share/zoneinfo/Asia/riyadh89' लोड करने में असमर्थ। इसे छोड़ना चेतावनी: समय क्षेत्र के रूप में '/ usr/share/zoneinfo/mideast/riyadh87' लोड करने में असमर्थ। इसे छोड़ना चेतावनी: समय जोन के रूप में '/ usr/share/zoneinfo/mideast/riyadh88' लोड करने में असमर्थ। इसे छोड़ना चेतावनी: समय क्षेत्र के रूप में '/ usr/share/zoneinfo/mideast/riyadh89' लोड करने में असमर्थ। इसे छोड़ना चेतावनी: समय जोन के रूप में '/usr/share/zoneinfo/iso3166.tab' लोड करने में असमर्थ। इसे छोड़ना चेतावनी: समय क्षेत्र के रूप में '/ usr/share/zoneinfo/posix/Asia/riyadh87' लोड करने में असमर्थ। इसे छोड़ना चेतावनी: समय क्षेत्र के रूप में '/ usr/share/zoneinfo/posix/Asia/riyadh88' लोड करने में असमर्थ। इसे छोड़ना चेतावनी: समय क्षेत्र के रूप में '/ usr/share/zoneinfo/posix/Asia/riyadh89' लोड करने में असमर्थ। इसे छोड़ना चेतावनी: समय क्षेत्र के रूप में '/ usr/share/zoneinfo/posix/mideast/riyadh87' लोड करने में असमर्थ। इसे छोड़ना चेतावनी: समय क्षेत्र के रूप में '/ usr/share/zoneinfo/posix/mideast/riyadh88' लोड करने में असमर्थ। छोड़कर इसे छोड़ दें। चेतावनी: समय क्षेत्र के रूप में '/ usr/share/zoneinfo/posix/mideast/riyadh89' लोड करने में असमर्थ। छोड़कर इसे छोड़ दें। चेतावनी: समय क्षेत्र के रूप में '/ usr/share/zoneinfo/right/Asia/riyadh87' लोड करने में असमर्थ। इसे छोड़ना चेतावनी: समय क्षेत्र के रूप में '/ usr/share/zoneinfo/right/Asia/Riyadh88' लोड करने में असमर्थ। इसे छोड़ना चेतावनी: समय क्षेत्र के रूप में '/ usr/share/zoneinfo/right/Asia/riyadh89' लोड करने में असमर्थ। इसे छोड़ना चेतावनी: समय क्षेत्र के रूप में '/ usr/share/zoneinfo/right/mideast/riyadh87' लोड करने में असमर्थ। छोड़कर इसे छोड़ दें। चेतावनी: समय क्षेत्र के रूप में '/ usr/share/zoneinfo/right/mideast/riyadh88' लोड करने में असमर्थ। छोड़कर इसे छोड़ दें। चेतावनी: समय क्षेत्र के रूप में '/ usr/share/zoneinfo/right/mideast/riyadh89' लोड करने में असमर्थ। छोड़कर इसे छोड़ दें। चेतावनी: समय जोन के रूप में '/usr/share/zoneinfo/zone.tab' लोड करने में असमर्थ। इसे छोड़ना

क्या किसी को पता है कि यह क्यों हो रहा है?

पुनश्च:

मैं datetimes कन्वर्ट करने के लिए निम्न विधि का उपयोग कर रहा हूँ:

CONVERT_TZ(NOW(),'UTC', 'PCT') 

क्या यह संभव है कि मैं सिर्फ गलत तरीके से परिवर्तित कर रहा हूँ और उस शून्य परिणाम का कारण है?

http://bugs.mysql.com/bug.php?id=20545

सिफारिश की वैकल्पिक हल केवल चेतावनी को अनदेखा करने के लिए (यदि आप निश्चित रूप से उन क्षेत्रों के बीच व्याप्त जरूरत नहीं है) है:

+0

आपकी पाइपलाइन में पहला आदेश, यह 'mysql_tzinfo_to_sql' स्क्रिप्ट, अगर आप इसे सीधे' mysql' में पाइप नहीं करते हैं तो एक बड़ी बदसूरत .sql फ़ाइल उत्सर्जित करता है। वह फ़ाइल कैसी दिखती है? क्या आपको ऐतिहासिक सऊदी अरब टाइमज़ोन डेटा की आवश्यकता है? –

+0

नहीं, मूल रूप से मैं केवल यूटीसी से पीएसटी में परिवर्तित हो जाएगा। मुझे लगता है कि आप नहीं चाहते कि मैं पूरी बड़ी बदसूरत एसक्यूएल स्क्रिप्ट पोस्ट करूं। क्या कुछ विशिष्ट है जो मुझे .sql फ़ाइल में खोजना चाहिए? –

उत्तर

23

यह डेबियन पर रियाद * के लिए समय क्षेत्र फाइलों के साथ एक बग है

mysql_tzinfo_to_sql /usr/share/lib/zoneinfo | mysql -uroot --force mysql 

--force विकल्प के साथ TZ डेटा आयात करने के बाद, आप CONVERT_TZ उपयोग करने के लिए सक्षम हो जाएगा। यहां मैंने जो किया है उसका प्रतिलेखन यहां दिया गया है:

sh$ mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -uroot -p mysql --force 2> /dev/null 
Enter password: ******** 
sh$ mysql -p 
Enter password: ******** 
Server version: 5.1.49-3 (Debian) 

mysql> select convert_tz(now(), 'UTC', 'CET'); 
+---------------------------------+ 
| convert_tz(now(), 'UTC', 'CET') | 
+---------------------------------+ 
| 2013-08-13 21:04:34    | 
+---------------------------------+ 
1 row in set (0.00 sec) 
+1

जानकारी के लिए धन्यवाद। ऐसा लगता है कि मेरे पास सब कुछ स्थापित करने की ज़रूरत थी, लेकिन शून्य हो रही थी क्योंकि मैं 'PST8PDT' के बजाय' PST' में परिवर्तित हो रहा था ... –

+3

@AbeMiessler: D TZ नाम पर संदेह के मामले में, आप 'mysql से पूछ सकते हैं। एक त्वरित जांच के लिए time_zone_name'। यदि आपका विशेष मामला: 'mysql.time_zone_name से नाम चुनें जहां नाम'% PST% 'है; ' –

1

दुर्भाग्य से, सिल्वेन के समाधान ने मेरे लिए काम नहीं किया।

मैं अपने विकास सर्वर (विंडोज़ पर) के PHPMyAdmin से टेबल निर्यात करके और निर्माण स्क्रिप्ट को थोड़ा सा ट्विक करके हमारे उत्पादन सर्वर की टाइमज़ोन टेबल को पॉप्युलेट करने में सक्षम था।

चूंकि स्क्रिप्ट एक पोस्ट में साझा करने में बहुत लंबा है, इसलिए मैं इसे अपने Google ड्राइव पर होस्ट करूंगा। टिप्पणी के साथ

https://drive.google.com/file/d/0B7iwL5F-hwr_YkItRXk2Z1VZdlE/view?usp=sharing

स्क्रिप्ट:

स्क्रिप्ट (नई लाइनों और टिप्पणियों छीन साथ) स्थापित

https://drive.google.com/file/d/0B7iwL5F-hwr_dWdjTDREcXNHQmM/view?usp=sharing

टिप्पणियों के बिना संस्करण का उपयोग करना सुनिश्चित करें। टिप्पणी संस्करण को चलाने के लिए लगभग 5 मिनट लगते हैं और कुछ कारणों से असफल हो जाते हैं जबकि पट्टी वाले संस्करण को चलाने के लिए 5 सेकंड से कम समय लगता है।

नोट: आपको काम करने के लिए शायद root के रूप में चलाने की आवश्यकता होगी।

संबंधित मुद्दे