擅长:python、mysql、java
<p>主要问题是,Django希望控制数据库</p>
<p><strong>Django通常应该如何处理:</strong></p>
<ol>
<li>您创建模型,Django将创建表</李>
<li>修改模型时</li>
<li>您应该创建一个迁移并应用迁移,这将反过来应用所有必需的数据库更改</李>
</ol>
<p>更改数据库然后修改模型会带来麻烦,因为手动alter表中可能缺少一些细微的参数</p>
<p>有几种方法可以解决这个问题</p>
<p><strong>1.)更改模型,手动更改表,并执行假迁移</strong></p>
<ul>
<li>手动将表更改为与Django完全相同的状态</li>
<li>应用假迁移</li>
</ul>
<p><strong>2.)转储旧数据、更改模型、创建新数据库并导入/复制数据。</strong></p>
<ul>
<li>创建当前数据库的完整转储</li>
<li>删除它(或者对于sqlite,只需重命名db文件)</li>
<li>编辑<code>models.py</code></li>
<li>使用Django创建一个新的空数据库<code>manage.py migrate</code>)</li>
<li>尝试将转储还原到新创建的数据库。(如果字段名称和字段类型相同,则应能正常工作)</li>
</ul>
<p>如果您对Django创建的迁移文件有任何问题,并且您的代码仅在一台服务器上运行,那么只需删除所有迁移文件(<strong>并删除<code>__pycache__</code>目录中所有相关的.pyc文件</strong>),然后从头开始重新创建初始迁移</p>
<p>请确切地告诉我们目前的情况</p>
<p><strong>附录20200723:</strong></p>
<p>如果发布当前数据库文件的确切当前架构,可能会有所帮助</p>
<p>你可以用它来做这个</p>
<pre><code>sqlite3 databasefile.db ".schema users"
</code></pre>