[英]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.