2015-11-04 63 views
0

我正在開發一個數據存儲在SQLite數據庫中的Android應用程序。將SQLIte Data遷移到MySQL並管理/更新外鍵?

我已經與網絡中的MySQL數據庫進行了同步,以便將數據存儲在設備中的SQLite中。

問題是我不知道如何維護表之間的關係,因爲主鍵將用AUTO_INCREMENT更新,並且外鍵保持不變,從而破壞了表之間的關係。

回答

0

如果這是完全遷移,請勿在遷移過程中使用自動增量 - 使用普通列創建表。導入後使用ALTER TABLE更改模型。

對於增量同步,我看到的最簡單的方法是每個MySQL表中的附加列sqlite_id,並填充原始ID。然後,您可以使用UPDATE(使用連接)更新引用。

替代方案涉及用於存儲數據的臨時表和用於配對的輔助表。對於更大的數據模型是乏味的。

我傾向於使用的方法,如果可能的話,是在這種情況下避免自動增量。我有一個輔助表,有四列,如下所示:t_import(tablename,operationid,sqlite_id,mysqlid)。 過程如下:

  1. 將主鍵導入t_import。如果需要,使用operationid來分隔平行輸入。

  2. 爲數據表生成新密鑰並將它們存儲到t_import表中。這可以與第一步相結合。

  3. 導入實際數據並使用t_import設置新的主鍵和恢復關係。

這應該爲我所瞭解的大多數情況下工作。

0

感謝或幫助,你給了我一些想法。

我會嘗試將ID2字段添加到將相同的值(_id)

存儲作爲主鍵。當我從SQLite的將信息發送到MySQL和主鍵遞增我有表將id2字段與主鍵的原始值進行比較,以便我可以將其與其他表的外鍵進行比較並更新它。

讓我們看看它是否有效。

謝謝

+0

只要小心做適當的事務隔離,如果多個同步可以同時運行。 – Thinkeye