রূপান্তর_টিজ নাল ফেরায়


96

আমি জানি এটি নির্বোধ মনে হয়, কিন্তু যখন আমি ব্যবহার করি

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

এটা নাল আউটপুট। আমি উবুন্টু 12.04 64 বিটে মাইএসকিউএল ওয়ার্কবেঞ্চ ব্যবহার করছি, এবং এটি আমার অন্যান্য ল্যাপটপ / ওএসে (মাইএসকিউএল ওয়ার্কবেঞ্চ ব্যবহার করে) কাজ করে।

উত্তর:


181

আপনি যদি সময় অঞ্চল সারণীটি মাইএসকিএলে লোড না করে থাকেন তবে এটি ঘটবে।

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

mysql মাইএসকিউএল-নির্দিষ্ট কনফিগারেশন ডেটা ধারণ করে এমন অন্তর্নির্মিত ডাটাবেসের নাম।


4
আপনার কি একবারে এটি করা দরকার বা প্রতিবার মাই এসকিএল শুরু হবে?
আবে মাইস্লার

4
শুধু একবার. এটি মাইএসকিউএলে একটি টেবিলে তথ্য লোড করে, যা তখন থেকে ব্যবহৃত হয়।
বারমার

4
আপনার চালানো যে কোনও ত্রুটিও ওভাররাইড করতে আপনি বলের পতাকাটি ব্যবহার করতে পারেন: mysql_tzinfo_to_sql / usr / share / زونinfo | mysql -u root --force -p mysql
স্কাম

4
মাইএসকিউএল ডেমনটি কার্যকর হওয়ার আগে আমার খুব পুনরায় চালু করা দরকার (ডেবিয়ানে)।
একস্টার

4
হাই, আমি যখন এই কমান্ডটি চালাচ্ছি তখন আমি এ জাতীয় ত্রুটি পেয়েছি: সতর্কতা: সময় অঞ্চল হিসাবে '/usr/share/zoneinfo/iso3166.tab' লোড করতে অক্ষম। এড়িয়ে চলেছে। সতর্কতা: সময় অঞ্চল হিসাবে '/usr/share/zoneinfo/zone.tab' লোড করতে অক্ষম। এড়িয়ে চলেছে।
ঘনশ্যাম ক্যাটরিয়া

26

স্বীকৃত উত্তরে কমান্ডটি চালানোর পরে (যা মাইএসকিউএল এর ডেভ সাইটের সাথে একই) কমান্ডটি টাইমজোনগুলির মধ্যে রূপান্তর করতে অক্ষম ছিল এমন কারণ খুঁজে বের করার চেষ্টা করার পরে আমি এই থ্রেডটি পেয়েছি

SELECT CONVERT_TZ('2004-01-01 12:00:00','UTC','MET') AS time

এটি প্রমাণিত হয়েছে যে ওএস এক্সে দুটি ফাইল রয়েছে যা সমস্যা তৈরি করে: /usr/share/zoneinfo/Factoryএবং /usr/share/zoneinfo/+VERSION

স্থির করা ... অস্থায়ীভাবে এই ফাইলগুলিকে অন্য কোনও স্থানে সরিয়ে নেওয়া যেমন /usr/share/zoneinfo/.bak/কমান্ডের অনুমতি দেয়

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

সমস্ত প্রত্যাশিত সময় অঞ্চল তথ্য সম্পূর্ণরূপে পপুলেশন করতে।

এটি আমার মাইএসকিউএল এর ইনস্টল করা সংস্করণে বাগ থাকতে পারে বা নাও হতে পারে:

$ mysql --version
mysql  Ver 14.14 Distrib 5.6.11, for osx10.6 (x86_64) using  EditLine wrapper

আমিও অপারেটিং করছি STRICT_MODE

যাই হোক না কেন, আমি আশা করি এটি ঠিক করার জন্য যে কেউ অনুসন্ধান করে তার জন্য কয়েকটি মাথা ব্যথা বাঁচায়।


13

উইন্ডোজ পরিবেশ ছাড়াও আপনি সময় অঞ্চল নির্ধারণ করতে পারেন

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

ইন উইন্ডোজ পরিবেশ,

1. download Time zone description tables from http://dev.mysql.com/downloads/timezones.html

2. Stop MySQL server

3. Put then inside Mysql installation package (যেমন। সি: \ প্রোগ্রাম ফাইলগুলি \ মাইএসকিউএল \ ডেটা \ মাইএসকিএল) ``

4. Start MySQL server

আপনার কাজ শেষ ..

আপনি পাচ্ছেন যদি এখনো NULLজন্য CONVERT_TZ ডাউনলোড MySQL ডাটাবেসের মধ্যে এই ডাটাবেজ টেবিল এবং এটি সন্নিবেশ http://www.4shared.com/folder/Toba2qu-/Mysql_timezone.html

এখন আপনার সমস্যার সমাধান হয়ে যাবে .. :)


2

আপনি যদি উইন্ডোজ মাইএসকিএল ব্যবহার করে থাকেন তবে আপনাকে টাইমজোন ডেটা মাইএসকিএল স্কিমায় লোড করতে হবে। এখানে একটি ভাল হাওটো: http://www.geeksengine.com/article/populate-time-zone-data-for-mysql.html

আপনি যদি এটি না করেন তবে CONVERT_TZ ফাংশনটি আপনার ইনপুট টাইমজোনকে স্বীকৃতি দেবে না (যেমন আপনার উদাহরণগুলি: 'ইউটিসি', 'এশিয়া / জাকার্তা') এবং সহজেই NULL ফিরিয়ে দেবে।


2

এমএএমপি প্রো

  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/

বাইনারি ফোল্ডারের অবস্থান ব্যতীত, এটি সাধারণভাবে ম্যাকোসের ক্ষেত্রে প্রযোজ্য। ধন্যবাদ!
কর্নেলিক্লিক

2

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) উইন্ডোজ স্টার্ট বোতামে "পরিষেবাগুলি" অনুসন্ধান করে মাইএসকিউএল পরিষেবাটি বন্ধ করুন।

৫) তারপরে টাইমজোন_2017c_posix.zip আনজিপ করুন এবং তারপরে এতে ফাইলগুলি অনুলিপি করুন (সরাসরি ফাইলগুলি অনুলিপি করুন, পুরো ফোল্ডারটি নিজেই অনুলিপি করবেন না) এবং এতে পেস্ট করুন C:\ProgramData\MySQL\MySQLServer5.x\Data\mysql\

)) মাইএসকিউএল ৫.7-এর জন্য টাইমজোন_2017c_posix.zip আনজিপ করার পরে কেবল একটি .এসকিউএল ফাইল দেবে এবং এটি সমস্যার সমাধান নাও করতে পারে। সুতরাং এগিয়ে যান এবং 5.6 এর জন্য জিপ ফাইলটি ডাউনলোড করুন এমনকি আপনি মাইএসকিউএল 5.7 চালিয়ে যাচ্ছেন এবং সেই ফাইলগুলিতে অনুলিপি করুনC:\ProgramData\MySQL\MySQL Server 5.x\Data\mysql\

)) মাইএসকিউএল সার্ভারটি পুনরায় চালু করুন। CONVERT_TZ () কাজ করছে কিনা তা পরীক্ষা করতে এই বর্গ কোয়েরিটি চালান।

SELECT CONVERT_TZ('2004-01-01 12:00:00','UTC','Asia/Jakarta'); এবং নন-নাল আউটপুট পরীক্ষা করুন।


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

আপনি যদি ত্রুটিটি পান data too long for column 'abbreviation' at row 1 তবে দেখুন: https://bugs.mysql.com/bug.php?id=68861

সমাধানটি নিম্নলিখিতটি চালানো হবে

এটি মাইএসকিএল মোড অক্ষম করার জন্য একটি লাইন যুক্ত করবে এবং মাইএসকিউএলকে কাটা তথ্য inোকাতে দেবে এটি একটি মাইএসকিএল বাগের কারণেই যেখানে মাইএসকিএল শেষে নাল অক্ষর যুক্ত করবে (উপরের লিঙ্ক অনুসারে)

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

আমার কাছে ওএসএক্স এল ক্যাপিটান রয়েছে এবং এটি কাজ করার পক্ষে এটিই একমাত্র উত্তর। ভবিষ্যতের রেফারেন্সের জন্য: আমার ক্ষেত্রে ত্রুটিটি বলে: "সারি 1 এ কলাম 'সংক্ষেপণের জন্য ডেটা খুব দীর্ঘ"। দ্রষ্টব্য: অন্যান্য
উত্তরে

BTW আমার MySQL পুনরায় আরম্ভ করার দরকার নেই।
হেপাবোলু ২

1

আপনি উইন্ডোজ এবং মাইএসকিউএল 5.7 ব্যবহার করে এটি কার্যকর করার জন্য এই পদক্ষেপগুলি।

  1. মাই কম্পিউটার / কম্পিউটার / এই পিসিতে বা আপনার ওএসের নাম যাই হোক না কেন রাইট ক্লিক করুন এবং সম্পত্তি নির্বাচন করুন।
  2. বাম প্যানেল থেকে "উন্নত সিস্টেম সেটিংস" চয়ন করুন।
  3. "এনভায়রনমেন্টাল ভেরিয়েবলস" চয়ন করুন, আপনার মাইএসকিউএল বিন ডিরেক্টরিটির সম্পূর্ণ পথের নাম লিখুন (সাধারণত এটি হবে, সি: \ প্রোগ্রাম ফাইলগুলি \ মাইএসকিউএল \ মাইএসকিউএল সার্ভার 5.7 \ বিন)।
  4. সিএমডি প্রম্পট খুলুন, মাইএসকিএল ব্যবহার করে প্রবেশ করুন mysql -u root -p password
  5. use mysqlমাইএসকিউএল ডিবি নির্বাচন করতে প্রবেশ করুন।
  6. "টাইমজোন_ওয়াইওয়াইওয়াইসি_পোসিক্স_সকিএল.জিপ" ফাইলটি (YYYY এর জায়গায়, 2017 বা 2018 এর মতো সেই পৃষ্ঠায় উপলভ্য সর্বাধিক বছরটি প্রতিস্থাপন করুন) https://dev.mysql.com/downloads/timezones.html থেকে ডাউনলোড করুন ।
  7. এটি এক্সট্রাক্ট করুন এবং টেক্সট সম্পাদকটিতে ফাইলটি খুলুন।
  8. সামগ্রীগুলি অনুলিপি করুন এবং সিএমডি প্রম্পটে কার্যকর করুন।

সফল সমাপ্তির পরে, আপনার ব্যবহার CONVERT_TZএবং অন্যান্য টাইমজোন ফাংশনগুলি সক্ষম হওয়া উচিত ।


0

এক্সএএমপিপি ব্যবহার করার সময় ম্যাক ওএস ক্যাটালিনাতে,

টার্মিনালের / অ্যাপ্লিকেশনস / এক্সএএমপিপি / এক্সএএমপিপিএলস / বিন ফোল্ডারে যান তারপরে নিম্নলিখিতটি চালান।

./mysql_tzinfo_to_sql / usr / share / অঞ্চলinfo | sed -e "s / স্থানীয় সময় অঞ্চলটি সেট করতে হবে - জিক ম্যানুয়াল পৃষ্ঠা / স্থানীয় /" দেখুন ./mysql -u root mysql

এটি আমার পক্ষে কাজ করেছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.