-1

こんにちは、私はジャンゴ開発の初心者ですが、とにかくこの質問では一般的ではないようにします。

モデルの設計中に奇妙な問題が発生しました。プロジェクトの最初の頃と同じように、多くの変更を加えたいと思っています。問題は、完全に新しいデータベースを作成して settings.py にリンクしない限り、1 つの syncdb の後、モデルで何も変更できないことです。奇妙なことに、この古いデータベースを削除することさえできません。Sequel Pro から実行しようとすると、フリーズします。

私は少しグーグルで調べましたが、djangoでモデルを設計する段階で自由度を持つ唯一のオプションは、南または同様のツールですか?

このメカニズムは、既存のプロジェクトでデータの一貫性を維持するなどの特定の目的のためであることは知っていますが、開発を開始したばかりで、すべてのテーブルに 0 レコードさえあります。

私の開発では、5.6.13 MySQL Community Server、Django 1.5 を使用しています。すべてOS X上で実行されています。

4

3 に答える 3

5

South は、移行または変更を行った場合に最適なツールです。私もそうだったように、初心者にとっては理解するのに少し時間がかかるかもしれませんが、最終的には気に入っていただけるでしょう。それ以外は、django 1.5flushで置き換えられたを使用できます。resetまた、アプリだけでなく、すべてのデータベースをフラッシュすることを覚えておいてください。

python manage.py flush

しかし、幸運にもここresetに移植されています。インストールして、設定に追加するだけです。そして、実行します

python manage.py reset appname

これが役に立ったことを願っています!

于 2013-11-11T08:51:32.133 に答える
0

わかった。ここで部分的に答えを見つけました: Django: Change models without clearing all data?

発言: " syncdb は、まだインストールされていないモデルのテーブルのみを作成します。インストール後にモデル クラスに加えられた変更に一致するように ALTER TABLE ステートメントを発行することはありません。モデル クラスとデータベース スキーマへの変更には、多くの場合、何らかの形式のあいまいさが含まれます。そのような場合、Django は正しい変更を推測する必要があります. その過程で重要なデータが失われるリスクがあります. モデルに変更を加えており、それに合わせてデータベーステーブルを変更したい場合は、 sql コマンドを使用して新しい SQL 構造を表示し、それを既存のテーブル スキーマと比較して変更を確認してください。」

わかった。実行できることがわかりました。python manage.py sql <app_name>それを貼り付けるべきpython manage.py dbshellですか?

dbshel​​l を使用して、Sequel Pro では不可能だったデータベース全体を削除することができました。

python manage.py dbshell

そしてMySQL経由:

drop database <db_name>;

また、Sequel Pro からアクセスするとデータベースがフリーズするのはなぜですか?

于 2013-11-11T08:40:51.940 に答える