簡體   English   中英

將MySQL數據庫遷移到SQLite時出錯

[英]Error when migrating MySQL database to SQLite

我可以訪問托管在遠程服務器上的MySQL數據庫。 我正在嘗試將其遷移到本地SQLite數據庫。 為此,請按照問題的建議使用腳本。 用法是

./mysql2sqlite mysqldump-opts db-name | sqlite3 database.sqlite

我嘗試這樣做(沒有轉儲選項),而sqlite3返回錯誤:

Error: near line 4: near "SET": syntax error

到目前為止,我發現當我僅在轉儲選項中指定我的一個表時,就像這樣

./mysql2sqlite db-name table-B | sqlite3 database.sqlite

它看起來工作正常,但是當我指定第一個表(我們稱其為表A)時,它將返回此錯誤。 我很確定由於mysql2sqlite的輸出而返回此錯誤。 轉儲文件的第4行(我猜是第4邏輯行,或從第4實際行開始的命令)看起來像這樣:

CREATE TABLE "Association_data_interaction" (
  "id" int(10)  DEFAULT NULL,
  ...
  "Comments" text CHARACTER SET latin1,
  ...
  "Experiment" text CHARACTER SET latin1,
  "Methods" text CHARACTER SET latin1,
  ...
);

與其他許多行刪除。 我不太了解SQL,但據我所知,遷移腳本正在嘗試使用可創建新數據庫的命令來輸出轉儲文件,但是該腳本必須在MySQL的輸出命令和命令之間進行轉換。 sqlite3想要創建一個數據庫,但無法正確處理文本字段。 我知道當我運行SHOW COLUMNS時; 在MySQL數據庫中,“注釋”,“實驗”和“方法”列為“文本”類型。 如何使sqlite3接受數據庫?

注意:我具有對數據庫的編輯權限,但如果可能的話,我更希望避免這種情況。 我認為我沒有對該數據庫的管理訪問權限。 另外,如果相關的話,數據庫有大約1000個表,其中大多數都有大約10,000行和10-50列。 我對數據庫的性能特征不太感興趣。 他們目前對我已經足夠了。

該腳本有錯誤; 其中一個錯誤是它期望在最后一個逗號前留一個空格:

gsub( /(CHARACTER SET|character set) [^ ]+ /, "" )

將該行替換為:

gsub( /(CHARACTER SET|character set) [^ ]+/, "" )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM