답변:
이것은 시간대 테이블을 mysql에로드하지 않은 경우에 발생합니다.
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
허용 된 답변 (MySQL의 개발 사이트에서 동일)에서 명령을 실행 한 후 명령이 다음과 같은 시간대 사이에서 변환 할 수없는 이유를 알아 내려고 시간을 보낸 후이 스레드를 발견했습니다.
SELECT CONVERT_TZ('2004-01-01 12:00:00','UTC','MET') AS time
: 그것은 OS X에 두 개의 파일이 원인 문제가 있다는 것을 밝혀 /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
에서 윈도우 환경,
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 : \ Program Files \ MySQL \ data \ mysql)`
4. Start MySQL server
.. 작업이 끝났습니다 ..
당신이 점점 계속하는 경우 NULL
에 대한 CONVERT_TZ
다운로드 MySQL 데이터베이스에이 데이터베이스 테이블과 삽입을 http://www.4shared.com/folder/Toba2qu-/Mysql_timezone.html
이제 문제가 해결됩니다 .. :)
Windows에서 MySql을 사용하는 경우 시간대 데이터를 mysql 스키마에로드해야합니다. 다음은 좋은 HOWTO입니다. http://www.geeksengine.com/article/populate-time-zone-data-for-mysql.html
이렇게하지 않으면 CONVERT_TZ 함수가 입력 시간대 (예 : 'UTC', 'Asia / Jakarta')를 인식하지 못하고 단순히 NULL을 반환합니다.
MAMP PRO
Terminal
cd /usr/share/zoneinfo/
sudo mv +VERSION ~/Desktop
cd /applications/MAMP/Library/bin
sudo ./mysql_tzinfo_to_sql /usr/share/zoneinfo | ./mysql -p -u root mysql
sudo mv ~/Desktop/+VERSION /usr/share/zoneinfo/
1) Windows에는 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) Windows 시작 버튼에서 "서비스"를 검색하여 MySQL 서비스를 중지합니다.
5) 그런 다음 timezone_2017c_posix.zip의 압축을 푼 다음 파일을 복사하고 (파일을 직접 복사하고 전체 폴더 자체를 복사하지 마십시오) 붙여 넣습니다.
C:\ProgramData\MySQL\MySQLServer5.x\Data\mysql\
6) MySQL 5.7의 경우 timezone_2017c_posix.zip은 압축을 푼 후 .sql 파일 만 제공하며 문제를 해결하지 못할 수 있습니다. 따라서 MySQL 5.7을 실행하는 경우에도 5.6 용 zip 파일을 다운로드하고 해당 파일을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_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
오류가 발생하면 https://bugs.mysql.com/bug.php?id=68861data too long for column 'abbreviation' at row 1
을 참조하십시오.
수정 사항은 다음을 실행하는 것입니다.
이것은 mysql 모드를 비활성화하는 줄을 추가하고 mysql이 잘린 데이터를 삽입하도록 허용합니다. 이것은 mysql이 끝에 null 문자를 추가하는 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
다음은 Windows에서 MySQL 5.7을 사용하는 경우 작동하도록하는 단계입니다.
mysql -u root -p password
.use mysql
MySQL DB를 선택하려면 입력하십시오 .성공적으로 완료되면 CONVERT_TZ
및 기타 시간대 기능 을 사용할 수 있어야 합니다.