3 回答

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊
該手冊(cè)指出以下內(nèi)容:
LOAD_FILE(文件名)
讀取文件并以字符串形式返回文件內(nèi)容。要使用此功能,文件必須位于服務(wù)器主機(jī)上,必須指定文件的完整路徑名,并且必須具有FILE特權(quán)。該文件必須全部可讀,并且其大小小于max_allowed_packet字節(jié)。如果將secure_file_priv系統(tǒng)變量設(shè)置為非空目錄名稱,則要加載的文件必須位于該目錄中。
如果文件不存在或由于不滿足上述條件之一而無(wú)法讀取,則該函數(shù)返回NULL。
從MySQL 5.0.19開(kāi)始,character_set_filesystem系統(tǒng)變量控制以文字字符串形式給出的文件名的解釋。
mysql> UPDATE t
SET blob_col=LOAD_FILE('/tmp/picture')
WHERE id=1;
由此看來(lái),在您的情況下,有不止一件事情可能是錯(cuò)誤的...
您正在通過(guò)完整的路徑嗎?
權(quán)限設(shè)置正確嗎?
函數(shù)返回什么?空值?
您是否嘗試過(guò)手冊(cè)中提供的查詢?

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超3個(gè)贊
我在Linux上遇到了同樣的問(wèn)題...
select load_file('/tmp/data.blob');
+-----------------------------+
| load_file('/tmp/data.blob') |
+-----------------------------+
| NULL |
+-----------------------------+
最終,在用戶和組所有權(quán)更改為“ mysql”之后,我可以成功加載文件:
sudo chown mysql:mysql /tmp/data.blob

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊
我只是想補(bǔ)充一下我在測(cè)試中發(fā)現(xiàn)的警告:
使用時(shí)select load_file('/path/to/theFile.txt');
,正在加載的文件必須在sql實(shí)例所在的計(jì)算機(jī)上。
這很長(zhǎng)時(shí)間以來(lái)一直困擾著我,因?yàn)槲乙恢笔褂肕ySQL工作臺(tái)將文件始終加載到我們的各種sql實(shí)例中,并且當(dāng)使用諸如此類的命令時(shí),LOAD DATA LOCAL INFILE 'C:/path/to/theFile.csv' INTO TABLE
無(wú)論將文件從我的本地硬盤(pán)驅(qū)動(dòng)器中輕松抓取并將其處理到表中,無(wú)論實(shí)際sql實(shí)例運(yùn)行的位置。但是,該load_file
命令似乎至少對(duì)我而言沒(méi)有相同的行為(也許存在我不知道的local_load_file()命令)。MySQL似乎只允許它從運(yùn)行sql實(shí)例的本地系統(tǒng)中查找文件。
因此,如果您像我一樣,卻無(wú)法弄清楚為什么load_file總是返回NULL,請(qǐng)不要擔(dān)心...將文件上傳到sql服務(wù)器實(shí)例,然后從查詢?yōu)g覽器使用該路徑,一切都會(huì)很好。
添加回答
舉報(bào)