Django 沒法同步數據庫model相應字段問題

前言:今天也是充滿bug的一天,臉上笑嘻嘻。。。。(繼續,講文明,懂禮貌)python

1,問題描述,models中的字段設置的是浮點型,可是輸出的結果老是int()類型mysql

modelssql

average_score = models.FloatField(verbose_name='平均分')

二、查找緣由,首先進入數據庫數據庫

1 mysql  #進入數據庫
2 
3 show databases; 4 
5 use mydata; 進入你的數據庫 6 
7 des knowledge_knowledgebase; 查看相應字段

而後就會發現,是的,如今average_acore的字段是int()沒錯的django

 

三、這時候你就會說同步一下數據庫不就行了,然而並非我太傻太天真。bash

python manage.py makemigrations  報錯app

django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency users.0001_initial on database 'default'測試

緣由:大概緣由是由於admin的模型依賴了以前默認的user模型吧  spa

四、最終解決方案code

首先將migrations下的數據刪除,而後在migrate確定是能夠的,可是測試須要我必須保留其中的數據,解決方案以下。

a、首先建一個新表

一、drop database mydata2;

二、 create database mydata2 character set utf8 collate utf8_bin

b、在setting中指向該數據庫

c、數據reset

sh reset.sh  該文件內容(該內容就是直接刪除migrations目錄下的數據,從新編譯)

 1 #!/usr/bin/env bash
 2 rm -rf user_center/mi*
 3 rm -rf alert_center/mi*
 4 rm -rf count_center/mi*
 5 rm -rf cmdb_center/mi*
 6 rm -rf work_center/mi*
 7 rm -rf knowledge/mi*
 8 rm -rf call_center/mi*
 9 rm -rf report_center/mi*
10 python manage.py makemigrations --empty work_center 11 python manage.py makemigrations --empty cmdb_center 12 python manage.py makemigrations --empty call_center 13 python manage.py makemigrations --empty report_center 14 python manage.py makemigrations --empty user_center 15 python manage.py makemigrations --empty count_center 16 python manage.py makemigrations --empty alert_center 17 python manage.py makemigrations --empty knowledge 18 python manage.py makemigrations 19 python manage.py migrate 20 python manage.py createsuperuser

d、將原數據庫mydata的數據導出

1  mysqldump -uroot  mydata > mcenter2.sql

e、進入mysql環境

 1 show databases;  2 
 3 use mydata2; #新表  4 
 5 desc knowledge_knowledgebase;  6 
 7 source /home/mcenter_backstage/mcenter_backstage/mcenter2.sql; #將原表的數據同步到新表  8 
 9 alter table knowledge_knowledgebase modify column average_score float(5,2); #更改字段的數據類型 10 
11 alter table knowledge_knowledgebase modify column create_time datetime;  #更改字段的數據類型

總結:當數據庫中包含數據的時候,沒法migrate成功,因此只能更改數據庫中的相應字段,這個辦法算是比較笨了。後續找到解決辦法會更新。

相關文章
相關標籤/搜索