2014-09-13 81 views
0

我正在將文件寫入一個帶有BLOB類型的MySql表。 爲什麼我需要這樣做有各種各樣的原因 - 我不能只使用文件系統。我的SQL BLOB(LONGBLOB)類型損壞我的數據

我發現將文件寫入數據庫,然後從數據庫讀迴文件已損壞。 我可以複製這個使用SQL,沒有別的。 該文件應該很容易放入LONGBLOB中,所以我不認爲數據被截斷。實際上,被讀回的數據大於正在寫入的數據。 我也遇到過與BLOB和MEDIUMBLOB相同的問題。

這裏是SQL:

CREATE TABLE Video(
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
ShopAssistant_Id int NOT NULL, 
Data LONGBLOB NOT NULL, 
FOREIGN KEY (ShopAssistant_Id) REFERENCES ShopAssistant(id) 
); 

--insert data from a file 
insert into video (shopassistant_id, data) values (1, LOAD_FILE('/Users/tmck/temp/introduction.mp4')); 
--read data back into a different file 
select data into outfile '/Users/tmck/temp/ret.mp4' from Video; 

如果我們現在比較文件,ret.mp4比introduction.mp4越大,單個字節已經被更改,並且文件已損壞,將無法播放。 文件本身很小,大約245 KB。

MySql中的'選項'導致它轉換我的數據?

+0

你可以區分這兩個文件並找出確切的區別是什麼嗎? – 2014-09-13 10:20:57

+0

你正在使用哪個引擎? InnoDB的? – luksch 2014-09-13 10:22:50

+0

表的引擎是InnoDB – tpemckiernan 2014-09-13 11:27:04

回答