로그인/회원등록 구현 과정 중 여태 영어만 집어넣다가 superuser 생성 시 이름으로 '최고 관리자'를 넣어줬다.
def create_superuser(self, admin_id, password): # 최고관리자 생성
user = self.create_user(
admin_id=admin_id,
admin_level=True,
admin_parent=0,
admin_name='최고 관리자',
)
그리고 manage.py createsuperuser를 실행했는데, 다음과 같은 오류가 발생했다.
django.db.utils.OperationalError: (1366, "Incorrect string value:
'\\xEC\\xB5\\x9C\\xEA\\xB3\\xA0...' for column 'admin_name' at row 1")
아..인코딩..
MYSQL 클라이언트로 접속 후
mysql > show variables like 'c%'; |
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
| check_proxy_users | OFF |
| collation_connection | utf8_general_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
| completion_type | NO_CHAIN |
| concurrent_insert | AUTO |
| connect_timeout | 10 |
| core_file | OFF |
+--------------------------+----------------------------+
전부 utf8인데 이 database의 charset만 latin으로 되어있었다.
mysql > ALTER SCHEMA `App` DEFAULT CHARACTER SET utf8; |
이 스키마의 캐릭터셋을 utf8로 바꿔준다.
그리고 다시 manage.py createsuperuser를 실행해봤지만..
또 안된다...
혹시나 하고 models.py로 가서,
def create_superuser(self, admin_id, password): # 최고관리자 생성
user = self.create_user(
admin_id=admin_id,
admin_level=True,
admin_parent=0,
admin_name='최고 관리자'.encode('utf8'),
)
string.encode 속성을 강제로 넣어줬다.
makemigration, migrate 하고 createsuperuser 재시도
좋아 완벽했어.
'Web App > Python - Django' 카테고리의 다른 글
[VSCode] 파이썬에서 C/C++ 전처리기 리전 기능 사용하기 (0) | 2019.11.27 |
---|