PDA

Показать полную графическую версию : Исполнение sql запроса в скрипте


Negativ
30-07-2007, 13:08
Задача:
Необходимо выполнять sql запрос каждые сутки для оптимизации одной из таблиц.

Что делаю:
скрипт

#!/bin/sh

my='/usr/local/bin/mysql --user=root --password=pass base
SQLS='--execute=/usr/local/rc.d/mysql/scripts/opt_user_stats.sql;'

$my $SQLS


запускаю. Mysql:
./empty_user_stats.sh
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the ma
nual that corresponds to your MySQL server version for the right syntax to use n
ear '/usr/local/rc.d/mysql/scripts/opt_user_stats.sql' at line 1

содержимое opt_user_stats.sql:
OPTIMIZE TABLE "user_stat";

Причем в интерактивном режиме данный sql запрос выполняется.

Как реализовать? Где ошибка?

Раскопал дальше.

#!/bin/sh
my='/usr/local/bin/mysql --user=root --password=pass base'
path='/usr/local/rc.d/mysql/scripts/opt_user_stats.sql'

$my < $path


В opt_user_stats.sql
OPTIMIZE TABLE user_stat;

Ошибка:
./empty_user_stats.sh
./empty_user_stats.sh: cannot open /usr/local/rc.d/mysql/scripts/opt_user_stats.sql: No such file or directory

Оказывается mysql может прочитать файл только из корня. Сделал симлинк в корне на файл и все заработало.
Соответственно вопрос, почему не mysql не может прочитать файл из /usr/local/rc.d/mysql/scripts ?

mar
09-08-2007, 14:59
Negativ,
скорей всего в системе, под которой Вы сидите не определены пути для пользователя, от имени которого Вы запускали mysql. Определить можно в файле конфигурации пользовательского шелла в домашнем каталоге этого самого пользователя.




© OSzone.net 2001-2012