我在本地系统上开发了一个django项目,现在我将其部署到服务器上。我使用MySql作为数据库。每当我尝试将我模型(使用python manage.py migrate
或python manage.py makemigrations
)迁移到服务器的新数据库时,它显示以下错误:
django.db.utils.ProgrammingError: (1146, "Table '<DB_NAME>.mainapp_service' doesn't exist")
并且不会在数据库中创建表。
我没有移动任何我的本地migration
文件到服务器,只是移动mainapp/migrations/__init__.py
文件.
如何创建所有表格并运行应用程序?
2条答案
按热度按时间46scxncf1#
你真的不应该在服务器上运行
makemigrations
。你应该在版本控制中包含迁移,并将你的迁移文件推送到服务器上,然后运行migrate
。确保你已经在服务器上创建了数据库,并在settings.py中配置了它。查看关于迁移的工作流部分。jucafojl2#
Django中MySQL的配置
settings.py
数据库迁移
Python3不支持MySQLdb,
pymysql
是一个替代方案。1.首先,在venv中安装
pymysql
2.在
_init_.py
或settings.py
中添加以下代码。1.在终端中运行迁移命令:
python manage.py makemigrations
后显示No changes detected
,则尝试运行python manage.py makemigrations --empty appname
。数据迁移
将SQLite数据导出到MySQL
1.SQLite数据导出
settins.py
在航站楼内
将数据导出到根字典中的
data.json
文件。2.导入数据到MySQL
在
settings.py
中将配置从Django修改为MySQL:运行
注:确保Mysql表为空,确保
Mysql user table
为空,如果以前迁移过数据到Mysql,可能会出错,注意出错时报错信息,如果提示主键重复,需要先删除数据,该数据是迁移文件应用到MySQL数据库时产生的。通常是与content_type
相关的表。在MySQL终端中:
如果出错,删除所有数据,重新导入数据库,基本上导入数据失败是因为MySQL中有数据存在。
3.加载时区表
另外,也有可能是安装的MySQL没有加载时区表,Django官方文档也指出了这个问题,MySQL网站也有相应的方法来应对:加载时区表。
Linux/Mac解决方案非常简单。windows系统应该首先下载一个sql
file:timezone_2018e_posix_sql.zip
下载完成后,解压缩得到sql文件,执行cmd命令导入文件:
4. MySQL到PostgreSQL
在PostgreSQL配置中:
不同APP之间的数据库迁移
1.生成模型文件
2.将模型文件导入应用程序
创建应用程序
3.将模型导入到创建的应用程序中