已解决
【教程】Sqlite迁移到mysql(django)
来自网友在路上 169869提问 提问时间:2023-11-21 16:01:50阅读次数: 69
最佳答案 问答题库698位专家为你答疑解惑
1、先将sqlite db文件导出sql
sqlite3 db.sqlite3 .dump>output.sql
db.sqlite3 是 sqlite 数据库文件
output.sql是导出sql文件的名称
2、sql文件转换、处理
sed 's/AUTOINCREMENT/AUTO_INCREMENT/g' output.sql | sed 's/datetime/timestamp/g' | sed 's/INTEGER/int/g' > new.sql
sql处理完后可能依然 导入到mysql 会报错,需要额外 根据报错进行处理。
3、导入到mysql
进入mysql,选择数据,然后执行
source /mnt/d/new.sql
4、错误处置
如果导入成功,此步骤跳过即可,
如果失败则根据错误再次处理sql文件
- 比如建表语句错误,那么可能需要手动更正(或建表后导入)
- 比如一些没用的sql语句也可以删除sed '/INSERT INTO auth_/d'
- 有些报错的比如,PRAGMA foreign_keys=OFF; 可以考虑删除
- 针对django sqlite 和mysql转换,我这里是直接先在settings里配置mysql,然后使用django的迁移命令在mysql里先创建空表
- python manage.py makemigrations
- python manage.py migrate
- 然后第2步的时候 sed 's/AUTOINCREMENT/AUTO_INCREMENT/g' output.sql | sed 's/datetime/timestamp/g' | sed 's/INTEGER/int/g' | sed '/CREATE TABLE /d' | sed '/INSERT INTO django_/d' | sed '/INSERT INTO auth_/d' | sed '/INSERT INTO Login_ldapuserdb/d' > new.sql
- 这里特别将“CREATE TABLE” 建表语句删除,将insert auth_ 和 django_ 开头 数据插入也删除,因为django迁移已经执行过了。
反复多次,报错 <->修改,直到导入时没有错误。
查看全文
99%的人还看了
相似问题
- conda创建pytorch环境报错
- Python通过selenium调用IE11浏览器报错解决方法
- kafka本地安装报错
- 【BUG】第一次创建vue3+vite项目启动报错Error: Cannot find module ‘worker_threads‘
- git 构建报错
- Docker build报错总结,版本过新大避雷!
- Mongodb3.4升级高版本mongoTemplate.executeCommand报错The cursor option is required
- duplicate复制数据库单个数据文件复制失败报错rman-03009 ora-03113
- 安装第三方包报错 error: Microsoft Visual C++ 14.0 or greater is required——解决办法
- 邮件|gitpushgithub报错|Lombok注解
猜你感兴趣
版权申明
本文"【教程】Sqlite迁移到mysql(django)":http://eshow365.cn/6-41368-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: 查看docker容器IP地址
- 下一篇: UE5像素流送详细教程,以及解决黑边和鼠标消失问题