sqlite3迁移mysql

尝试方案

plan1:sqlite 导出 成sql文件,mysql倒入

步骤:

  1. 使用sqlite3的导出功能

sqlite3 db.sqlite3 ".dump" > new.sql

  1. setting 配置新库,并初始化新库

python3 manage.py migrate

  1. 登录mysql,使用source 命令进行sql执行

问题:

  1. sqlite导出的文件中,表名都是带双引号,需要替换

  2. 部分主键外键问题

结果:引号问题容易解决,主外键问题比较纠结,放弃

plan2:使用django的数据导入导出机制

步骤:

  1. 停服务

  2. 使用manage进行数据导出 (此时setting配置为 sqlite)

python3 manage.py dumpdata > data.json

  1. setting配置改成新库,并初始化新库

python3 manage.py migrate

  1. 使用manage进行导入

python3 manage.py loaddata data.json

问题:

  1. 系统报错,主键冲突

django.db.utils.IntegrityError: Problem installing fixture '/home/webmonitor/data.json': Could not load contenttypes.ContentType(pk=7): (1062, "Duplicate entry 'myecho-site' for key 'django\_content\_type\_app\_label\_model\_76bd3d3b_uniq'")

原因不明,后发现可能是由于model进行过修改,原库是通过补丁一次一次变更,新库是直接初始化,model的位置不同

解决方案:

  1. 使用dbshell (python3 manage.py dbshell) 或者直接进入新库,删除初始化的数据

DELETE FROM django\_content\_type;

在delete的过程中发现有依赖的表,一并删除

  1. 重新执行数据导入

python3 manage.py loaddata data.json

结果:成功 Installed 39294 object(s) from 1 fixture(s)

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

Python3:sqlalchemy对mysql数据库操作,非sql语句

Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''