执行Django迁移后MySQL未生成books表的问题咨询
问题原因
你模型里的Meta类设置了managed = False,这个配置会告诉Django不要自动创建或维护该数据库表,所以哪怕执行了migrate命令,Django也不会帮你生成books表。
解决方法
方法一:让Django自动管理表(推荐)
- 修改
models.py中的Meta类,把managed = False改成managed = True:class Meta: managed = True db_table = 'books' - 删除
bookList/migrations/目录下的0001_initial.py文件 - 重新生成迁移文件:
python manage.py makemigrations bookList - 执行迁移创建表:
完成后去MySQL里就能看到python manage.py migrate bookListbooks表了。
方法二:手动创建表(保留managed=False)
如果需要保持managed=False(比如表结构需要手动控制),得自己在MySQL里手动创建对应表:
- 登录MySQL,切换到你的Django项目数据库
- 执行以下SQL语句创建
books表(字段要和模型完全对应):
执行完后,Django就能正常和这个表交互了,但后续表结构变更都需要手动修改SQL。CREATE TABLE books ( id BIGINT AUTO_INCREMENT PRIMARY KEY, site_name TEXT NOT NULL, site_id TEXT NOT NULL, image TEXT NOT NULL, book TEXT NOT NULL, author TEXT NOT NULL, publisher TEXT NOT NULL, price TEXT NOT NULL, link TEXT NOT NULL, category_name TEXT NOT NULL, category_id TEXT NOT NULL );
内容的提问来源于stack exchange,提问作者océane
相关产品推荐
相关产品推荐

