将 Django DB 从 SQLite 迁移到 MySQL 的最佳方法是啥?

     2023-02-24     176

关键词:

【中文标题】将 Django DB 从 SQLite 迁移到 MySQL 的最佳方法是啥?【英文标题】:What's the best way to migrate a Django DB from SQLite to MySQL?将 Django DB 从 SQLite 迁移到 MySQL 的最佳方法是什么? 【发布时间】:2011-03-03 08:54:09 【问题描述】:

我需要将我的数据库从 sqlite 迁移到 mysql,而那里的各种工具/脚本太多了,我无法轻松找到最安全和最优雅的解决方案。

这在我看来不错 http://djangosnippets.org/snippets/14/ 但似乎已经 3 年没有更新了,这令人担忧..

您能否推荐一个已知在 Django 1.1.1 中可靠的解决方案?

【问题讨论】:

我猜你已经尝试了dumpdata,然后是loaddata 【参考方案1】:

执行:

python manage.py dumpdata > datadump.json

接下来,将您的 settings.py 更改为 mysql 数据库。

最后:

python manage.py loaddata datadump.json

【讨论】:

除非有时这行不通,如果你已经将 unicode 数据放入 sql 中的字符串中,fixture creator 和 mysql 似乎无法相处。至少,这就是我来这里试图弄清楚如何解决的问题。 或者由于完整性错误......或许多其他问题,这不起作用。 有时会引发“...不是 JSON 可序列化的” 运行 dumpdata > datadump.json 引发错误:CommandError: No installed app with label '>'.【参考方案2】:

经过一番艰苦的搜索,我遇到了几个问题,我希望将来寻找答案的人会觉得有用。

我的公式是

    python manage.py dumpdata > datadump.json 将 settings.py 更改为您的 mysql 确保您可以连接到您的 mysql(权限等) python manage.py migrate --run-syncdb

    在 shell 中使用这个 sn-p 排除内容类型数据

    python manage.py shell

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

    python manage.py loaddata datadump.json

希望对你有帮助!

【讨论】:

内容类型数据排除有什么作用? @DeltaG 标准答案是this。但我找到的最佳答案是:this one 这对我也有用。 loaddata 命令需要执行第 5 步。 我得到了这个答案 django.db.models.fields.related_descriptors.RelatedObjectDoesNotExist:安装夹具时出现问题'/home/ubuntu/news-manifest-master/datadump.json':评论没有 content_type。 为什么要运行-syncdb?没有那个我不得不跑【参考方案3】:

我从 sqlite 迁移到 MySQL 所需的步骤(更完整)列表,YMMV:

    python manage.py dumpdata > datadump.json 确保您可以连接到您的 mysql(权限等) 确保您有修改 FOREIGN_KEY_CHECKS 的权限(为此,我必须安装并运行我自己的私有 mysql 实例) 确保未使用 InnoDB 引擎(在每个表中使用 MyISAM),否则下一步将无法工作(静默失败)! 通过此命令放松验证(这在 InnoDB 中不会生效): SET GLOBAL FOREIGN_KEY_CHECKS = 0; 单独加载 django_site.sql 表(如果使用 contrib.sites) 将 settings.py 更改为您的新 mysql python manage.py migrate --run-syncdb 通过修改 Django 应用程序的 /migrations 目录中的代码和必要时的数据库表来修复 syncdb 错误错误 用这个 sn-p 排除 contentype 数据(可以放在主 urls.py 模块中): from django.contrib.contenttypes.models import ContentType ContentType.objects.all().delete() quit() 如果需要编辑json数据必须先美化: cat datadump.json | python -m json.tool > datadump_pretty.json python manage.py loaddata datadump.json 修复所有数据截断问题 将时区数据添加到数据库: 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 在不提交任何数据的情况下测试网站是否正常运行 SET GLOBAL FOREIGN_KEY_CHECKS = 1; 测试其余部分

【讨论】:

【参考方案4】:

这是避免其他地方描述的ContentType 问题的一种更简洁的方法:

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

然后:

./manage.py loaddata dump.json

【讨论】:

这是一个有用的补充;您可以通过添加更多步骤来改进此答案,例如 Carlos Henrique Cano 的答案。

South - 将 django 应用程序从 sqlite 迁移到 mysql

】South-将django应用程序从sqlite迁移到mysql【英文标题】:South-migratingdjangoapplicationfromsqlitetomysql【发布时间】:2012-03-0307:35:33【问题描述】:我有一个django应用程序,直到现在我使用sqLite作为数据库后端。现在,当它非常接近生产... 查看详情

如何将 Django 模型从 mysql 迁移到 sqlite(或在任何两个数据库系统之间)?

】如何将Django模型从mysql迁移到sqlite(或在任何两个数据库系统之间)?【英文标题】:HowtomigrateDjangomodelsfrommysqltosqlite(orbetweenanytwodatabasesystems)?【发布时间】:2011-05-3111:22:25【问题描述】:我在生产环境中有一个使用MySQL的Django... 查看详情

Django:将数据从 SQLite 移动到 PostgreSQL

】Django:将数据从SQLite移动到PostgreSQL【英文标题】:Django:MovingdatafromSQLitetoPostgreSQL【发布时间】:2018-05-2300:37:27【问题描述】:我最近继承了一个使用Django编写的webapp的生产代码库。到目前为止,项目使用的数据库一直是默认... 查看详情

从 Sqlite 迁移到 CoreData

】从Sqlite迁移到CoreData【英文标题】:MigratefromSqlitetoCoreData【发布时间】:2015-10-0509:25:02【问题描述】:到目前为止,我有一个使用Sqlite数据库的应用程序。我想升级应用程序并交付核心数据而不是Sqlite。我需要将现有的sqlitedb... 查看详情

如何将现有的 sqlite 表迁移到具有 VARCHAR、TIMESTAMP 等数据类型的 ROOM Db?

】如何将现有的sqlite表迁移到具有VARCHAR、TIMESTAMP等数据类型的ROOMDb?【英文标题】:HowtomigrateexsitingsqlitetabletoROOMDbwhichhavedatatypeslikeVCHAR,TIMESTAMP?【发布时间】:2018-10-2317:31:50【问题描述】:在我的旧sqlite表中,我有这些列(idINTEGE... 查看详情

将 Django 开发数据库从默认 SQLite 更改为 PostgreSQL

】将Django开发数据库从默认SQLite更改为PostgreSQL【英文标题】:ChangingDjangodevelopmentDatabasefromthedefaultSQLitetoPostgreSQL【发布时间】:2018-10-2316:18:54【问题描述】:从默认SQLite数据库迁移到Postgres数据库需要采取哪些步骤?我这样做是... 查看详情

Django:将数据从一个数据库复制到另一个

】Django:将数据从一个数据库复制到另一个【英文标题】:Django:copydatafromonedatabasetoanother【发布时间】:2012-04-1613:38:47【问题描述】:我有两个sqlite.db文件。我想将数据库文件表中一列的内容复制到另一列。例如:我在名为new.db... 查看详情

如何从 SQLite 迁移到 PostgreSQL (Rails)

】如何从SQLite迁移到PostgreSQL(Rails)【英文标题】:HowtomigratefromSQLitetoPostgreSQL(Rails)【发布时间】:2011-05-1323:32:55【问题描述】:我是DB菜鸟,所以请善待我。我在通过tapsgem将我的SQLiteDB推送到Heroku时遇到了一些问题。与他们交谈时... 查看详情

Django 1.8 迁移无法将列 ID 转换为整数

】Django1.8迁移无法将列ID转换为整数【英文标题】:Django1.8migrationunabletocastcolumnidtointeger【发布时间】:2015-09-0601:00:07【问题描述】:我正在将我的网站从SQLite后端迁移到Postgres后端。从项目一开始,我们就一直在运行原生Django风... 查看详情

使用 SQLObject 将数据从一个 sqlite 数据库迁移到多个 SQLite 数据库

】使用SQLObject将数据从一个sqlite数据库迁移到多个SQLite数据库【英文标题】:MigratingdatafromonesqlitedatabasetomultipleSQLitedatabasesusingSQLObject【发布时间】:2011-11-2618:15:19【问题描述】:到目前为止,我们的应用程序一直在使用一个以SQ... 查看详情

将密码从 Drupal 7 迁移到 Django

】将密码从Drupal7迁移到Django【英文标题】:MigratepasswordsfromDrupal7toDjango【发布时间】:2012-04-1005:26:18【问题描述】:我正在将一个站点从Drupal7迁移到Django1.4,包括当前用户。如何使用Drupal散列的密码?根据this,Drupal7使用SHA-512... 查看详情

无法将 Django 从 1.7 迁移到 1.8

】无法将Django从1.7迁移到1.8【英文标题】:CannotmigrateDjangofrom1.7to1.8【发布时间】:2020-09-2923:39:39【问题描述】:将django1.7升级到1.8时(最终目标是将1.4迁移到1.11LTS)我被要求从我的INSTALLED_APPS中删除SOUTH很好,但是我明白了:rai... 查看详情

将数据库从本地 django 迁移到 heroku

】将数据库从本地django迁移到heroku【英文标题】:Migratedatabasesfromlocaldjangotoheroku【发布时间】:2016-06-1815:22:24【问题描述】:我在Django中有一个应用程序,我部署在heroku中。部署运行良好,但我的模型的数据库没有迁移。部署后... 查看详情

Django:从本地开发推送时,SQLite 在 Heroku 上覆盖 POSTGRESQL db

】Django:从本地开发推送时,SQLite在Heroku上覆盖POSTGRESQLdb【英文标题】:Django:SQLiteoverridingPOSTGRESQLdbonherokuwhenpushingfromlocaldevelopment【发布时间】:2014-11-2312:29:57【问题描述】:所以我在本地进行了更改,然后推送到github和heroku,... 查看详情

迁移时django sqlite到postgresql ProgrammingError

】迁移时djangosqlite到postgresqlProgrammingError【英文标题】:djangosqlitetopostgresqlProgrammingErrorwhenmigrate【发布时间】:2016-11-0821:06:53【问题描述】:我已经看过很多关于这个的帖子,但到目前为止没有一个对我有帮助。我有一个工作的d... 查看详情

从 SQLite 导出到 SQL Server

】从SQLite导出到SQLServer【英文标题】:ExportingfromSQLitetoSQLServer【发布时间】:2010-09-1420:28:31【问题描述】:是否有工具可以将SQLite数据库迁移到SQLServer(包括结构和数据)?【问题讨论】:【参考方案1】:适用于Android。adbrootadb... 查看详情

将 sqlite DB 从收件箱复制到文档目录

】将sqliteDB从收件箱复制到文档目录【英文标题】:copysqliteDBFromInboxtodocumentsdirectory【发布时间】:2014-06-1614:00:23【问题描述】:当从邮件中打开sqlite文件时,它会出现在我的文档目录中名为收件箱的文件夹中我使用此代码将此... 查看详情

将文件夹和文件结构从 django 1.3 迁移到 django 1.4 的最佳方法是啥?

】将文件夹和文件结构从django1.3迁移到django1.4的最佳方法是啥?【英文标题】:Whatsisthebestwaytomigratefolderandfilesstructurefromdjango1.3todjango1.4?将文件夹和文件结构从django1.3迁移到django1.4的最佳方法是什么?【发布时间】:2012-04-0902:02:... 查看详情