2009-06-02 16 views
3

Windowsでsqliteを使用してDjangoでアプリケーションを開発しています。このdbはLinuxマシンで動作しますか?そうでなければ、私はLinux上で新しいデータベースのデータをどのように複製するのですか(スクリプトの作成は一方通行です)?sqliteデータベース間でデータを転送する

答えて

8

SQLiteは、WindowsとLinuxの両方のプラットフォームに対応しています。

The database file format is cross-platform - you can freely copy a database between 32-bit and 64-bit systems or between big-endian and little-endian architectures. These features make SQLite a popular choice as an Application File Format.

出典:ロバートが書いているようにhttp://sqlite.org/about.html

9

、SQLiteのファイルは、任意のプラットフォーム上で動作するはずです。あなたは、MySQLやPostgreSQLに切り替えることを決定した場合は、Windowsマシン上のデータベースを保存するには、以下の(標準)コマンドを実行することができます。その後、

manage.py dumpdata <app1> <app1> > mydbdump.json 

とMySQLまたはPostgreSQL用のLinuxマシン上でsettings.pyを設定します

manage.py syncdb 
manage.py loaddata ./mydbdump.json 

私はsuccessfulyこれをいくつかの機会に、MySQLからSQLiteに切り替えるためにこれを行いました。

dumpdataコマンドのリストを省略して、インストールされているすべてのアプリケーションのデータをダンプすることはできますが、再度ロードすることはできません。すべてのダンプには、デフォルトのDjangoレコードコンテンツタイプとユーザ認証もsyncdbコマンドで作成されます。だからあなたのようなエラーが表示されます

IntegrityError: columns app_label, model are not unique

ダンプして読み込み、動作する特定のアプリケーションを一覧表示します。

+3

すべてのdjangoのモデルをダンプしてロードしようとすると、「IntegrityError:列app_label、モデルが一意ではありません」というエラーが表示されます。代わりに、 "python manage.py dumpdata auth.User myapp1 myapp2"を使うことができます(djangoからUserモデルをダンプするだけです)。 – xhh

+1

優れたチップ、xhh。私はこれをもっと早く見てほしかった。 – pojo

関連する問題