MySQL에서 이모티콘(Emoji)를 저장하려고 하면 Incorrect string value 에러 메세지가 발생하게 됩니다.


MySQL의 utf8은 3byte로 표현되는 범위내의 문자만 입력할 수 있습니다.


하지만 이모티콘(Emoji)는 4byte로 표현되기 때문에 위와같은 에러가 발생합니다.


MySQL 5.5.3부터 4byte를 지원하는 utf8mb4라는 캐릭터셋이 추가되었습니다. 


따라서 이모티콘을 삽입하기 위해서는 테이블의 캐릭터셋을 uft8mb4로 변경해야 합니다.


여러가지 방법이 있지만 저는 mysql 설정파일 my.cnf파일을 수정했습니다.


MySQL 5.5.3이상에서만 가능하기 때문에 이전 버전이라면 업데이트를 해줘야 합니다.



1. /etc/my.cnf에 내용을 추가해줍니다.


[mysqld] 

character-set-server = utf8mb4

collation-server = utf8mb4_unicode_ci



2. MySQL 서비스를 재시작해줍니다.


servicce mysqld restart





출처 : http://jabstorage.tistory.com/23

Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation


mysql에서 다음과 같은 오류가 발생했다면 character set의 문제라고 볼수 있습니다.


1. mysql에 접속합니다.


[root@localhost~]# mysql -uroot -p

Enter password:


2. 데이터 베이스를 선택합니다.


[root@localhost~]# use 내가사용할db이름;


예시)

[root@localhost~]# use changmin;


3. 테이블의 collation을 변경해줍니다.


[root@localhost~]# alter table 테이블이름 default character set utf8 collate utf8_general_ci;


예시)

[root@localhost~]# alter table changmin default character set utf8 collate utf8_general_ci;


 utf8이 아닌 다른 캐릭터셋을 변경하고 싶다면 다른 캐릭터셋을 입력하시면 됩니다.


1. mysql 실행


[root@localhost ~]# mysql -uroot -p

Enter password: "비밀번호 입력한다"


2. 


show variables like 'c%'; 


명령어 입력해서 character set을 확인합니다.


3.


quit


명령어를 입력해서 mysql실행을 종료합니다.


4. 


vi /etc/my.cnf


명령어를 입력해서 vi편집기를 통해 열어줍니다.


[mysql]

default-character-set = utf8


[mysqld]

character-set-client-handshake=FALSE

init_connect="SET collation_connection = utf8_general_ci"

init_connect="SET NAMES utf8"

character-set-server = utf8

collation-server = utf8_general_ci


[client]

default-character-set = utf8


위의 내용을 추가합니다.

vi편집기 명령어를 모른다면 검색해서 익숙해지자...


5.


service mysql restart


mysql을 재실행합니다.


6. 


show variables like 'c%'; 


다시 확인해줍니다.


7. 


만약 아직 database가 latin1으로 나온다면 데이터베이스 삭제후 다시 만들어줘야한다...


drop database DB이름;

create database DB이름;


끝~~







다음과 같은 오류가 발생한다면 PHP시간대 설정이 안되어있는 경우이다.


https://zetawiki.com/wiki/PHP_%EC%8B%9C%EA%B0%84%EB%8C%80_%EC%84%A4%EC%A0%95


* 확인


cat /etc/php.ini | grep timezone


* 수정


- sed로 수정

grep date.timezone /etc/php.ini

cp /etc/php.ini /etc/php.ini.old

sed -i 's/;date.timezone =/date.timezone = Asia\/Seoul/g' /etc/php.ini

diff /etc/php.ini.old /etc/php.ini


- 직접수정

vi /etc/php.ini

date.timezone = Asia/Seoul

위에처럼 주석을 제거하고 값을 넣어준다.


* 확인

php -r "echo date('Y-m-d H:i:s').PHP_EOL;"

service httpd restart

다음과 같은 오류가 발생한다면???


selinux 설정을 해제 해주어야합니다.


1. 일시적인 방법


setenforce 0


2. /etc/selinux/config 파일수정


vi편집기를 이용해서 


# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

빨간색으로 표시된 부분을


SELINUX=disabled

으로 수정합니다.


1. Apache설치 사이트


https://zetawiki.com/wiki/CentOS_%EC%95%84%ED%8C%8C%EC%B9%98_%EC%84%A4%EC%B9%98


- 설치확인하기


rpm -qa httpd


yum list httpd 


- 설치하기


yum install httpd



- 서비스시작하기


service httpd start



- 재부팅시 자동 시작하기


chkconfig --list httpd


chkconfig httpd on



2. MariaDB설치 사이트


https://zetawiki.com/wiki/CentOS_MariaDB_%EC%84%A4%EC%B9%98


- 설치 확인하기


rpm -qa | grep MariaDB


- 저장소 추가하기


- 일단 확인하기


yum repolist


vi /etc/yum.repos.d/MariaDB.repo


- 밑에 내용넣기


[mariadb]

name = MariaDB

baseurl = http://yum.mariadb.org/10.2/centos6-amd64

gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB

gpgcheck=1


- 이건 저장소제거하기


rm -f /etc/yum.repos.d/MariaDB.repo


- 설치하기


yum install MariaDB-server


- db시작하기


/etc/init.d/mysql start


- db비밀번호 설정하기


/usr/bin/mysqladmin -u root password '비밀번호넣기'


netstat -anp | grep 3306


- db접속하기


mysql -uroot -p


- 부팅시 자동시작 설정하기


chkconfig mysql on


chkconfig --list mysql



3. PHP설치 사이트


https://zetawiki.com/wiki/CentOS_6%EC%97%90_PHP_5.3_%EC%84%A4%EC%B9%98_(yum)


- 설치확인하기


rpm -qa | grep php


yum list php


- 설치하기


yum install php


- 확인하기


php -v


4. PHP버전 5.6으로 다시 설치하기


http://hotman.tistory.com/261


- MariaDB와 연동하기


mysql연동과 다르게 밑의 과정으로 연동한다


Warning –> mysqli_connect(): Headers and client library minor version mismatch. 

이런 오류가 발생한다면!!


# yum erase php-mysql


# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm


# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm


# yum install php-mysqlnd


안된다면


# yum --enablerepo=remi,remi-test install php-mysqlnd


# service mysql restart




1. 설치 전 확인


rpm -qa | egrep "^(httpd|php|mysql)"


2. 설치


yum install httpd mysql mysql-server php php-mysql


3. 설치 후 확인


rpm -qa | egrep "^(httpd|php|mysql)" | sort -n


4. 서비스 등록 확인


service httpd status
service mysqld status
php -v


5. httpd 시작 및 설정


service httpd start


6. mysqld 시작테스트


servicce mysqld start


7. Mysql 패스워드 지정, 테스트


/usr/bin/mysqladmin -u root password '1234'
mysql -u root -p


8. 재부팅시 자동시작 설정


chkconfig --list | egrep "mysqld|httpd"
chkconfig mysqld on
chkconfig httpd on
chkconfig --list | egrep "mysqld|httpd"


리눅스 종류, 버전확인


grep . /etc/*-release
grep . /etc/issue*
rpm -qa *-release


아파치 버전 확인


httpd -v



Mysql 버전확인


mysql --version


PHP 버전확인


php -v


+ Recent posts