2012-01-09 4 views
1

"assets"という名前のテーブルを持つ "crea"という名前のデータベースがあります。このテーブルには、名前、説明、資産タイプ、ローカル、一時私はまた、これらの画像を挿入する(xxxx.jp2).jp2形式で多くの画像とディレクトリのフォルダをERROR 1048(23000)at line 1:列にnullを設定することはできません

が何をしようとしているイムバルクにされてい

、データ、ID、CREATE_TIME、access_time、asset_flags、CreatorID)私のデータベースの "資産"の表では、私は2つのシェルスクリプトでそれを行うことに決めました。どちらも写真付きのディレクトリにあります。

私は端末から./assetadd.sh起動すると、私は、MySQLからこのエラーを取得する:

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

私は多くの時間をチェックし、コラム「データ」ありえないNULL(入力することを確認イム:LONGBLOBバイナリNull:NO)、なぜこのエラーが出るのか分かりません。

ヘルプは評価されます。

ありがとう - スクリプト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

名前に 'が含まれているファイルはありますか? –

答えて

1

documentation for LOAD_FILEから:

ファイルを読み取り、ファイルの内容を文字列として返します。この機能を使用するには、ファイルをサーバーホストに配置し、ファイルの絶対パス名を指定する必要があります。また、FILE特権が必要です。ファイルは、すべてが読み取り可能で、サイズがmax_allowed_pa​​cketバイト未満でなければなりません。 secure_file_privシステム変数が空でないディレクトリ名に設定されている場合、ロードするファイルはそのディレクトリになければなりません。

上記のいずれかの条件が満たされていないためにファイルが存在しないか、読み取れない場合は、NULLを返します。

少なくとも、ファイル名の完全なパスを指定していないようです。

関連する問題