问题描述

在使用django进行后端开发,在setting.py 中配置目标数据库信息后,并且在项目app下的model.py文件中定义了模型。之后使用 "python manage.py makemigrations"创建数据表时报错如下所示:

django.db.utils.ProgrammingError: (1146, "Table 'madjango1.index_type' doesn't exist")

报错分析

看到错误意思就是:未能找到madjango1.index_type表。而我们的数据库是刚创建的,怎么可能有没表呢?一脸尼克扬问号。

上网搜索许多说的都是删除app/migrations/下的其他文件,只留__init.py。这些步骤都是必须的,但是却未能解决我们的问题。那么根本原因何在?为什么会出现这样的报错?继续往上看报错信息:

File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "E:\Users\Administrator\PycharmProjects\MyDjango\MyDjango\urls.py", line 23, in <module>
    path('', include('index.urls')),
  File "E:\Users\Administrator\Anaconda3\envs\test3.6\lib\site-packages\django\urls\conf.py", line 34, in include
    urlconf_module = import_module(urlconf_module)
  File "E:\Users\Administrator\Anaconda3\envs\test3.6\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)

看到第二行有我们熟悉的文件路径 "File “E:\Users\Administrator\PycharmProjects\MyDjango\MyDjango\urls.py”, line 23, in " 大概明白了吧!确实也正如 “path(’’, include(‘index.urls’)),” 所示。当我们在构建数据库列表时,程序已经开始执行了。在url.py 文件下未能找到所需表格,于是便会出现报错(如果你是第一次执行,这个文件下没有其他的url,应该按网上所说的,删除/app/migrations/文件下的其他路径即可)。

问题解决

既然是url.py 入口处未能找到所需表格,那么尝试把它注释掉试试:

urlpatterns = [
    path('admin/', admin.site.urls),
    # path('', include('index.urls')),
    # path('front/', TemplateView.as_view(template_name='index.html'))
]

完美解决

(test3.6) E:\Users\Administrator\PycharmProjects\MyDjango>python manage.py makemigrations
Migrations for 'index':
  index\migrations\0001_initial.py
    - Create model Product
    - Create model Type
    - Add field type to product

(test3.6) E:\Users\Administrator\PycharmProjects\MyDjango>python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, index, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK

此时再去查看数据库:

mysql> use madjango1;
Database changed
mysql> show tables;
+----------------------------+
| Tables_in_madjango1        |
+----------------------------+
| auth_group                 |
| auth_group_permissions     |
| auth_permission            |
| auth_user                  |
| auth_user_groups           |
| auth_user_user_permissions |
| django_admin_log           |
| django_content_type        |
| django_migrations          |
| django_session             |
| index_product              |
| index_type                 |
+----------------------------+
12 rows in set (0.00 sec)

此外,新建一个数据库后如何把之前数据中的数据迁移过来,免得手动输入。我在网上搜了下,是这样说的:

(test3.6) E:\Users\Administrator\PycharmProjects\MyDjango>python manage.py dumpdata > data.json

(test3.6) E:\Users\Administrator\PycharmProjects\MyDjango>python manage.py loaddata data.json
Installed 40 object(s) from 1 fixture(s)

执行如上所示命令后,再去查表,仍未迁移过来,这个以后找到好用的方法了再补充吧!

从一名不羁的码农开始,欢迎关注我的微信公众号
在这里插入图片描述

Logo

更多推荐