2012-01-09 230 views
1

我有一個名爲「crea」的數據庫,其中有一個名爲「assets」的表,並且在這個表中我有11列名爲(name,description,assetType,local,temporary ,數據,ID,CREATE_TIME,access_time,asset_flags,的CreatorID)ERROR 1048(23000)at line 1:Column can not be null

我也有很多圖片的目錄文件夾中.jp2格式(xxxx.jp2)

什麼即時試圖做的是批量插入這些圖片在我的數據庫的「資產」表中,所以我決定用2個shell腳本來完成,兩者都在圖片目錄中。

當我從終端啓動./assetadd.sh,我得到這個錯誤從MySQL:

ERROR 1048 (23000) at line 1: Column 'data' cannot be null 

我查了很多時間和IM確保列「數據」心不是NULL(型號:LONGBLOB二進制空:不),所以我真的不明白爲什麼我得到這個錯誤。

幫助將被折衷。謝謝

- 腳本1:assetsadd.sh

#!/bin/bash 

path=$(pwd) 
find $path/ -type f \(-iname *.jp2 \) -exec ./insertjp2.sh {} \; 

echo "finished!!" 

- 腳本2:insertjp2.sh

#!/bin/bash 

user="crea" 
password="crea" 
database="crea" 
dbhost="localhost" 
creator="crea" 

[email protected] 
basenam=${param##*/} 
filenam=${basenam%.*} 

MYSQL=`/usr/bin/mysql -u$user -p$password -D$database -e"INSERT INTO assets (name,description,assetType,local,temporary,data,id,create_time,access_time​,asset_flags,CreatorID) VALUES ('$filenam','$filenam',0,0,0,LOAD_FILE('$param'),'$filenam',UNIX_TIMESTAMP(),1325304546,0,'$creator');"` 

echo $param >> assetadd.log 
echo $MYSQL 
+0

任何文件的'在他們的名字? – 2012-01-09 18:11:11

回答

1

documentation for LOAD_FILE

讀取文件並以字符串形式返回文件內容。要使用此功能,文件必須位於服務器主機上,必須指定文件的完整路徑名,並且必須具有FILE權限。該文件必須全部可讀,並且其大小小於max_allowed_pa​​cket字節。如果secure_file_priv系統變量設置爲非空目錄名稱,則要加載的文件必須位於該目錄中。

如果由於上述條件之一未滿足而導致文件不存在或無法讀取,則函數返回NULL。

看起來至少你沒有指定文件名的完整路徑。

相關問題