2012-01-09 114 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。

看起来至少你没有指定文件名的完整路径。

相关问题