【发布时间】:2014-12-18 10:26:04
【问题描述】:
我已经编写了这段代码来将行插入到表中(如果不存在),否则,将“cnt”再更新一次。这很好用,当我从命令行调用它时,当我从 shell 脚本调用它时,这不起作用。
file=$1
echo "$0: Path to store $file" ;
res=`mysql -e "use spam_sending_scripts; select * from spamemailcount where path = '$file' limit 0,1"`
echo $res
if [ -z "$res" ]
then
mysql -e "use spam_sending_scripts; INSERT INTO spamemailcount (cnt,path) VALUES(1,'$file');"
echo "Inserting into DB $file , res $res" ;
exit ;
fi
mysql -e "use spam_sending_scripts; update spamemailcount SET cnt=cnt+1 where path = \"$file\"" ;
echo "Updating into DB $file" ;
#mysql -e "use spam_sending_scripts; select * from spamemailcount" >> /var/log/sendmail.log
mysql -e "use spam_sending_scripts; select * from spamemailcount"
root@server [/home]# insertintodb.sh AAA ==> 这工作正常。
当我从另一个脚本调用时,这个文件被执行,但是插入不起作用。
我像这样调用它:/home/insertintodb.sh $path
$path 变量正在正确地传递给 insertintodb.sh。
我收到以下错误:
++ mysql -e 'use spam_sending_scripts; select * from spamemailcount where path = '\''hackerssquadron.com/wp-comments-post.php'\'' limit 0,1'
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
【问题讨论】:
-
/home/insertintodb.sh "$path"呢? -
在调试模式下调用你的脚本:
bash -x /home/insertintodb.sh "$path" -
您是否可能从其他用户调用?因为你总是需要
~/.my.cnf和[mysql]文件来配置用户名和密码等,如果你在全局配置中没有默认登录/服务器。 -
感谢您的意见。