programing

Django DB를 SQLite에서 MySQL로 마이그레이션하는 가장 좋은 방법은 무엇입니까?

procenter 2023. 2. 2. 21:47
반응형

Django DB를 SQLite에서 MySQL로 마이그레이션하는 가장 좋은 방법은 무엇입니까?

db를 sqlite에서 mysql로 이행해야 하는데, 다양한 툴과 스크립트가 너무 많아서 가장 안전하고 우아한 솔루션을 쉽게 찾을 수 없습니다.

http://djangosnippets.org/snippets/14/은 좋은 것 같았지만, 업데이트를 받은지 3년이 지난 것 같아 걱정입니다.

Django 1.1.1에서 신뢰할 수 있는 솔루션을 추천해 주시겠습니까?

실행:

python manage.py dumpdata > datadump.json

다음으로 settings.py을 mysql 데이터베이스로 변경합니다.

마지막으로:

python manage.py loaddata datadump.json

열심히 찾아본 결과 몇 가지 문제점을 발견했는데, 향후 답변이 도움이 될 것으로 보입니다.

나의 공식은

  1. python manage.py dumpdata > datadump.json
  2. settings.py을 mysql로 변경합니다.
  3. mysql에 접속할 수 있는지 확인합니다(권한 등).
  4. python manage.py migrate --run-syncdb
  5. 셸에서 이 스니펫을 사용하여 contentype 데이터 제외

    python manage.py shell

    from django.contrib.contenttypes.models import ContentType ContentType.objects.all().delete() quit()

  6. python manage.py loaddata datadump.json

그게 도움이 되길 바라!

이 방법이 더 깔끔한 방법으로ContentType다른 곳에서 설명하는 문제:

./manage.py dumpdata --exclude contenttypes --exclude auth.permission --exclude sessions --indent 2 > dump.json

그 후, 다음과 같이 입력합니다.

./manage.py loaddata dump.json

sqlite에서 MySQL, YMMV로의 이행에 필요한 순서의 (풀)리스트:

  1. python manage.py dumpdata > datadump.json
  2. mysql(권한 등)에 접속할 수 있는지 확인합니다.
  3. FORNE_KEY_CHECKS를 변경할 수 있는 권한이 있는지 확인합니다(이를 위해 mysql의 개인 인스턴스를 설치하고 실행해야 했습니다).
  4. InnoDB 엔진을 사용하지 않는지 확인하십시오(모든 테이블에 MyISAM 사용). 그렇지 않으면 다음 단계가 작동하지 않습니다(사일런트 실패).
  5. 다음 명령으로 검증을 완화합니다(InnoDB에서는 활성화되지 않습니다). SET GLOBAL FOREIGN_KEY_CHECKS = 0;
  6. django_site를 로드합니다.sql 테이블을 별도로 지정합니다(contribute를 사용하는 경우).사이트)
  7. settings.py을 새로운 mysql로 변경합니다.
  8. python 관리.py migrate --run-syncdb
  9. 필요에 따라 Django 앱과 DB 테이블의 /migrations 디렉토리에 있는 코드를 수정하여 syncdb 오류를 수정합니다.
  10. 이 스니펫을 사용하여 콘텐츠 유형 데이터를 제외합니다(메인 urls.py 모듈에 넣을 수 있습니다). from django.contrib.contenttypes.models import ContentType ContentType.objects.all().delete() quit()
  11. json 데이터를 편집해야 하는 경우 먼저 데이터를 예쁘게 만들어야 합니다.cat datadump.json | python -m json.tool > datadump_pretty.json
  12. python 관리.py loaddata datadump.json
  13. 데이터 잘라내기 문제 해결
  14. 타임존 데이터를 데이터베이스에 추가합니다. mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -D mysql -P 1234 -u root -p --protocol=tcp mysql -P 1234 -u root -p -e "flush tables" --protocol=tcp
  15. 데이터를 송신하지 않고 사이트가 동작하고 있는지 테스트합니다.
  16. SET GLOBAL FORNE_KEY_CHECKS = 1;
  17. 나머지를 테스트하다

언급URL : https://stackoverflow.com/questions/3034910/whats-the-best-way-to-migrate-a-django-db-from-sqlite-to-mysql

반응형