首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 直接儲存視頻/圖片檔案至資料庫:LONGBLOB 實作範例

     編輯:MySQL 資料庫相關知識

資料表設計

CREATE TABLE test_media (
    id INT NOT NULL PRIMARY KEY,
    name VARCHAR(20),
    movie LONGBLOB  -- 或 MEDIUMBLOB (16MB 上限)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

匯入檔案 (伺服器端檔案路徑)

INSERT INTO test_media (id, name, movie)
VALUES (1, 'titanic', LOAD_FILE('/tmp/good.mp4'));

關鍵限制與注意事項 ⚠️

  • LOAD_FILE() 要求:
    ① 檔案在資料庫伺服器本機
    ② secure_file_priv 允許該目錄 (或未設定)
    ③ 檔案大小 < max_allowed_packet (預設 4MB,需調大)
    ④ 執行帳戶需有 FILE 權限
  • LONGBLOB 上限 4GB,但受限於 max_allowed_packet 與記憶體
  • 資料庫體積暴增,備份/還原/複制極慢,強烈不建議生產環境直接存大檔

生產環境推薦架構

  1. 檔案存儲於對象儲存 (S3/MinIO/OSS) 或分散式檔案系統
  2. 資料庫僅存:file_path、file_hash、mime_type、size、metadata
  3. 應用層簽名 URL 下載/上傳,資料庫不經手二進位流

若必須資料庫存儲 (小檔案/嵌入式場景)

  • 調大參數:max_allowed_packet=256M, innodb_log_file_size
  • 使用 COMPRESS() 儲存壓縮後資料,讀取時 UNCOMPRESS()
  • 定期 OPTIMIZE TABLE 整理碎片
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved