Django,sqlite到mysql的迁移,迁移页面的json解码器问题

bfrts1fy  于 2023-01-20  发布在  Mysql
关注(0)|答案(1)|浏览(114)

我有一个早期的简单的django项目,为了让事情开始,我们在安装时使用了一个sqlite数据库。其他人用各种插件创建了一些django页面,但由于这些是实际的页面而不是模板,它们存储在数据库中。我们意识到我们应该在制作这些页面之前迁移到mysql,现在我们有两个选择。1,我们进行迁移,然后他再次构建页面,这非常耗时,或者2,我们找到将sqlite数据库内容迁移到mysql的方法。
我一直试图找出第二个选择,迁移我们的sqlite数据库到mysql。我搜索谷歌,没有什么是简单的,因为我想,但我已经能够创建为sql转储文件,按照一些步骤来改变格式的文件说,并转储到新的mysql数据库。然而,虽然数据在那里,我可以访问管理和新的页面,当我试图在django管理中查看页面或复制粘贴它们时,所有迁移的页面都遇到了错误。为了清晰起见,我在迁移前创建了一个几乎空白的页面(现在尝试了几次),看看是否会遇到错误,它没有。错误如下所示
第一节第一节第一节第一节第一次
对于上下文,这是django 3.2,ptyhon 3.10,mysqlclient 2.1.1,我们在这个项目中使用了docker,但这似乎与这个问题无关.我的猜测是,我为使sql转储文件工作所做的调整导致了这个问题,引号中的问题发生了变化.以下是我为迁移数据所做的步骤列表以及我对转储文件所做的调整:
1.创建了转储文件,如下所示:sqlite3数据/数据库. sqlite3.转储〉转储. sql
1.编辑文件:删除行:PRAGMA外键=关;
1.编辑文件:更改开始事务-〉开始
1.编辑文件:更改自动增量-〉自动增量
1.编辑文件:查找所有包含sqlite_sequence的行并删除,mysql中未使用
1.编辑文件:将所有双引号“”替换为"“标记(编辑:完整解决方案见下文,但仅替换行中的双引号:创建唯一索引、创建索引和创建表(如果不存在)
1.编辑文件:最后,有一些行创建唯一的索引,名称太长,所以我不得不缩短他们,例如:将下面一行的名称更改为 blog_markdownpost_categories_id_3007eb9a_uniq
blog_markdownpost_categories上创建唯一索引blog_markdownpost_categories_markdownpost_id_blogcategory_id_3007eb9a_uniqmarkdownpost_idblogcategory_id);
1.最后,我把这个文件转储到mysql中,如下所示:mysql -u root用户-p“此处输入密码”数据库名称〈dump.sql
这些步骤对于移动数据是有效的,我认为大量将双引号改为''可能在某个地方引起了问题。有人有什么建议或想法吗?如果需要的话,我可以进一步阐述。

hc2pp10m

hc2pp10m1#

事实上,我在写这篇文章后不久就找到了解决方案,但如果有人需要帮助,这里有一个解决方案。我上面的步骤基本上是将sqlite迁移到mysql。然而,正如我所怀疑的,mass将所有的双引号“”替换为“”导致了问题。也就是说,插入插件的几行代码和文本如下所示:

  • 插入自定义插件自定义文本值(10,替换(替换('\ r....*

这些行需要用双引号引起来,所以不是我上面列表中的第6步,你必须找到并替换以下任何一行中的双引号:创建唯一的索引,创建索引,和创建表,如果不存在。繁琐,但我用查找和替换编辑那些行,并忽略其余的,这解决了问题,页面现在工作正常。

相关问题