2011-12-07 3 views
0

実動MySQLサーバーから開発SQLite3ファイルにデータをコピーする際に問題があります(開発マシンで実際のデータを再生するために)。私は、ネットからMySQLのSQLite3への変換方法についてたくさんのリソースを見つけました。そのほとんどは、精巧なsedフィルタを備えたbashスクリプトでしたが、誰もうまくいきませんでした(最も一般的な問題はインポート時の構文問題でした)。Rails:本番MySQLのデータを開発SQLite3にコピー

とにかく、私はYamlDBを見つけました。「なぜ、もちろん、私のために変換を行なわせてください!」これは、YAMLファイルに表示されるすべてのNULLフィールド(!!null)が実際のNULLではなく "--- !! null"としてSQLite3データベースにインポートされるためです。私はこの問題を抱える唯一の人で、GitHubの問題キューには何も言及されていないようです。

サイコ(this SO question)の代わりにsyckを使用するための回避策を試したこともありましたが、違いはありませんでした。

これは私の質問です。データベースの種類にかかわらず、別のデータベースにインポートするための簡単な方法を誰かが知っていますか?そして、「シンプルな」とは、コンソールでのいくつかのコマンドを意味します。 http://github.com/ricardochimal/taps

@タップに

+0

のsqlite3のDBに絶対パスを指定する必要があります生産と開発。レールとしてのデータベースにとらわれることはないと思われるので、データの完全性に関しては、依然として非常に異なる動作を得ることができます。これは、多くの異なるタイプの制約(MySQL)と非常に異なる制約/データ型サポート(SQLite3)をサポートするものを扱う場合に特に当てはまります。 – TreyE

+0

これまで私はその勧告を聞いたことがあります。しばらくの間、私は自分の開発マシンでMySQLを実行していました。しかし、私は実際にMacBookでMySQLサーバを起動しなければならないというオーバーヘッドが気に入らなかったので、開発のためにSQLite3に戻ってきました。あなたはまだ良い点を作っています。しかし、データのコピーは単方向(生産 - >開発)でしかなく、開発ハッキング中に "再生"データとして使用されます。 –

+0

私の大きな心配は、テスト中に違う動作を見るかもしれないということです。たとえば、異なるデータ型/制約のために、開発/テストに現れなかった本番稼働中のクラッシュが発生する可能性があります。 SQL Serverの開発とWindows VM/SQL Serverの起動が必要なときに私は本当に好きではありませんが、この方法で発見したバグの数は常にリソースの消費量を上回っています。 (リソースを消費するものがウィンドウズの場合は、実際に何かを言っている:P)。 – TreyE

答えて

2

ルックは、これは、ローカルのSQLite DBにMySQLのDBをダンプし、使用するのは比較的簡単であるだろう。コメントから

:あなたはschema parsing returned no columns, table probably doesn't existを示すエラーが出た場合、あなたは、私は本当に、本当にための2つの異なるデータベースのバックエンドを使用してお勧めしません代わりに比べて1つ

+0

それを除いて有望なこの外観は、あまりにも、私を憎むようです。サーバーのプルフォームを完了した後、私は何をしようとしても、常に 'スキーマの解析によって列が返されず、テーブルはおそらく存在しません。 'とクラッシュします。ああ、検索は続行されます... –

+1

「スキーマ解析で列が返されませんでした」というエラーを解決するには、相対パスではなくsqlite3 dbへの絶対パスを指定します。 – Urkle

関連する問題