반응형
데이터베이스 복원 시 이모티콘이 유지되지 않음
다음과 같이 순진한 데이터베이스 백업 및 복원을 수행합니다.
SCHEMA=${2:-mindlevel}
DB_HOST=$1
mysqldump -uroot -ppassword -h$DB_HOST --default-character-set=utf8mb4 --complete-insert --no-create-info $SCHEMA -r ${SCHEMA}_backup.sql
mysqladmin -uroot -ppassword -h$DB_HOST -f drop $SCHEMA &&
mysql -uroot -ppassword -h$DB_HOST --default-character-set=utf8mb4 < ${SCHEMA}_schema.sql &&
mysql -uroot -ppassword -h$DB_HOST $SCHEMA --default-character-set0=utf8mb4 < ${SCHEMA}_backup.sql
그러나 복원 전에 가지고 있던 모든 이모티콘은 ?로 표시되지만 이모티콘을 다시 입력하면 올바르게 저장되고 표시됩니다.
--default-character-set=utf8을 사용해 보았습니다만, 결과는 같습니다.
갱신:
SHOW CREATE TABLE user;
CREATE TABLE `user` (
`username` varchar(191) NOT NULL,
`description` varchar(1024) DEFAULT NULL,
`image` varchar(191) DEFAULT 'user.jpg',
`score` int(11) DEFAULT 0,
`level` int(11) DEFAULT 0,
`created` bigint(20) NOT NULL,
`last_active` bigint(20) DEFAULT NULL,
PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
백업 파일:
file mindlevel_backup.sql
mindlevel_backup.sql: UTF-8 Unicode text, with very long lines
의 윗부분mindlevel_backup.sql
:
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=
좋은 생각 있어요?
테이블의 열도 선언해야 합니다.CHARACTER SET utf8mb4
제공해주세요SHOW CREATE TABLE
및 의 첫 번째 부분backup.sql
.
해결책은 한 줄을 바꾸는 것이었다.송신원:
mysql -uroot -ppassword -h$DB_HOST $SCHEMA --default-character-set=utf8mb4 < ${SCHEMA}_backup.sql
수신인:
mysql -uroot -ppassword -h$DB_HOST $SCHEMA --default-character-set=utf8mb4 -e "SET NAMES utf8mb4; SOURCE"${SCHEMA}"_backup.sql;"
그게 왜 효과가 있었는지 모르겠으니 누가 설명해 주면 답을 업데이트해 줄게.
언급URL : https://stackoverflow.com/questions/53125453/database-restore-does-not-retain-emojis
반응형
'programing' 카테고리의 다른 글
?: PHP의 연산자('Elvis 연산자') (0) | 2022.10.12 |
---|---|
MySQL 테이블에서 제약을 제거하는 방법 (0) | 2022.10.12 |
mariaDB, 여러 테이블에서 삭제가 정말 안전합니까? (0) | 2022.10.12 |
php에서 실행 시간 초과를 늘리는 방법 (0) | 2022.10.12 |
JavaScript에서 랜덤 문자열/문자 생성 (0) | 2022.10.12 |