source

convert_tz가 null을 반환합니다.

itover 2023. 1. 15. 10:24
반응형

convert_tz가 null을 반환합니다.

바보같이 들릴지 모르겠지만

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

Ubuntu 12.04 64비트에서 MySQL Workbench를 사용하고 있으며 다른 노트북/OS에서도 동작합니다(MySQL Workbench 사용).

이는 표준 시간대 테이블을 mysql에 로드하지 않은 경우에 발생합니다.

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

mysql는 MySQL 고유의 설정 데이터를 보관하고 있는 임베디드 데이터베이스 이름입니다.

이 스레드는 MySQL의 개발 사이트에서 동일한 응답에서 명령을 실행한 후 다음과 같은 시간대를 변환할 수 없는 이유를 알아내기 위해 잠시 시간을 보낸 후 발견되었습니다.

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

OS X 、 2 、 개 os개2 。/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 버전의 오류일 수도 있고 아닐 수도 있습니다.

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

저도 수술하고 있습니다.STRICT_MODE.

어쨌든, 저는 이것이 해결책을 찾는 사람들에게 몇 가지 골칫거리를 덜어주기를 바랍니다.

Windows 환경과는 별도로 표준 시간대를 설정할 수 있습니다.

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

Windows 환경에서는,

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 C Files(::C:\Program Files\My)SQL\data\mysql)'

4. Start MySQL server

..당신 일은 끝났어요..

그래도 계속하고 있다면NULL★★★★★★에CONVERT_TZ이러한 데이터베이스 테이블을 다운로드하여 mysql 데이터베이스 http://www.4shared.com/folder/Toba2qu-/Mysql_timezone.html에 삽입합니다.

이제 문제가 해결되실 겁니다.:)

MAMP PRO

  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/

1)에서는 1) 에 데이터 폴더가.C:\Program Files\MySQL\이치노

2) 을 찾습니다.C:\ProgramData\MySQL\MySQL Server 5.x\Data\mysql으로 이 있어 C:\ProgramData\★★★★★★★★★★★★★★★★★★.

3) [View]탭의 [Settings](설정)을 변경하여 숨겨진 파일과 폴더를 표시합니다.

4) Windows의 [시작]버튼에서 [서비스]를 검색하여 MySQL 서비스를 정지합니다.

압축 후 파일하고 폴더하지 않음 5에 .C:\ProgramData\MySQL\MySQLServer5.x\Data\mysql\

6) MySQL 5.7은 timezone_2017c_posix.zip.sql을 사용합니다.5.하고 있는 5.하여 해당 파일을 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');출력에 문제가 없는지 확인합니다.

다음은 Windows에서 MySQL 5.7을 사용하는 경우에 사용할 수 있도록 하기 위한 단계입니다.

  1. [내 컴퓨터] / [컴퓨터] / [이 PC] 또는 OS의 이름을 오른쪽 클릭하여 [프로퍼티]를 선택합니다.
  2. 왼쪽 패널에서 [Advanced system settings](시스템 상세 설정)을 선택합니다.
  3. "환경 변수"를 선택하고 MySQL bin 디렉토리의 전체 경로 이름(일반적으로 C:\Program Files\My)을 입력합니다.SQL\MySQL Server 5.7\bin)을 클릭합니다.
  4. cmd 프롬프트를 열고 다음을 사용하여 mysql로 들어갑니다.mysql -u root -p password.
  5. 를 입력하십시오.use mysqlMySQL DB를 선택합니다.
  6. "timezone" 파일을 다운로드합니다.https://dev.mysql.com/downloads/timezones.html의 YYYc_posix_sql.zip" (YYYY 대신 2017년 또는 2018년과 같이 해당 페이지에서 사용 가능한 최대 연도를 치환합니다.
  7. 압축을 풀고 파일을 텍스트 편집기에서 엽니다.
  8. 내용을 복사하여 cmd 프롬프트에서 실행합니다.

정상적으로 완료하면, 다음을 사용할 수 있습니다.CONVERT_TZ기타 시간대 기능.

Windows에서 MySql을 사용하는 경우 mysql 스키마에 시간대 데이터를 로드해야 합니다.좋은 사용법을 소개합니다.http://www.geeksengine.com/article/populate-time-zone-data-for-mysql.html

이렇게 하지 않으면 CONVERT_ 함수가 됩니다.TZ가 입력 시간대를 인식하지 않습니다(예: ').UTC'('아시아/자카르타')는 NULL을 반환합니다.

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

에러가 나면data too long for column 'abbreviation' at row 1https://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

XAMPP를 사용하는 Mac OS Catalina에서는

터미널에서 /Applications/XAMPP/xamppfiles/bin 폴더로 이동한 후 다음을 실행합니다.

./mysql_tzinfo_to_sql /usr/share/zoneinfo | sed -e "s/Local time zone must be set--see zic manual page/local/" | ./mysql -u root mysql

이건 나한테 효과가 있었어.

언급URL : https://stackoverflow.com/questions/14454304/convert-tz-returns-null

반응형