Re: [Lug-bg] bash- >mysql=неволи
- Subject: Re: [Lug-bg] bash- >mysql=неволи
- From: Peter Pentchev <roam@xxxxxxxxxxx>
- Date: Wed, 7 Sep 2011 12:16:10 +0300
On Wed, Sep 07, 2011 at 12:00:42PM +0300, Georgi Georgiev wrote:
> От cron като изпълняваш скриптове, разликата е в обкръжението, разните
> променливи не са дефинирани.
>
> Пусни env от cron и от нормална конзола и виж какво е различно, вероятно там
> някъде се развалят нещата.
Мдам, и аз за нещо такова щях да кажа :) Само една добавка:
най-вероятно поне част от проблема е свързана с locale - като гледам, в
заявката се използват символи на кирилица. Обърни особено внимание на
евентуални разлики в променливите LANG и LC_*.
Също така... $curtime е променлива, която се задава в shell script-а,
така ли? (ако не, ще имаш проблеми с quoting с кавичките, но това не би
трябвало да се случва *само* при изпълнение от cron).
Поздрави,
Петър
--
Peter Pentchev roam@xxxxxxxxxxx roam@xxxxxxxxxxx peter@xxxxxxxxxxxxxxx
PGP key: http://people.FreeBSD.org/~roam/roam.key.asc
Key fingerprint FDBA FD79 C26F 3C51 C95E DF9E ED18 B68D 1619 4553
I am the thought you are now thinking.
> 2011/9/7 <kingfisher@xxxxxxxxx>
>
> > Привет на всички!
> >
> > Изчерпих се от към идеи затова реших да попитам по-знаещите :)
> > Имам елементарен bash скрипт които се обръща към mysql база за да провери
> > дадена стойност.Всичко работи и си мислех че лесно съм се отървал от един
> > досаден приятел и му е време да почерпи...пуснах го скрипта в cron-a и за
> > моя голяма изненада сутринта получих на пощата писмото както си му е реда,
> > но вътре стойностите бяха NULL.
> > Веднага се усъмних в cron-a и правата му, провери ги ,но си бяха наред за
> > всеки случаи в самият скрипт експортирах пътищата до командите,но не
> > според мен в това проблема.
> > Пуснах лога-а на mysql-а да видя какво пристига и всичко изглежда наред,
> > но резултата е NULL ако е изпълнено под cron-a, като го пусна на ръка си
> > работи, като копирам от лог-а на mysql-a заявката вътре в mysql-а пак си
> > работи.
> > Интересното е че не работи заявката дори ако изпълня като root със su -
> > root -c /usr/sbin/somescript.sh
> > Пробвах го и с ssh -l root 10.0.0.1 /usr/sbin/somescript.sh от друга
> > машина и пак не работи дава стойности NULL като в лога на mysql-a идва
> > нормална заявка ето и примерно какво правя:
> > QRY="SELECT SUM(GoodsTradeInSum)FROM (SELECT '$curtime' AS ReportDate,
> > goods.Name AS GoodsName, SUM(IF(ISNULL(operations.Qtty * operations.Sign),
> > 0, operations.Qtty * operations.Sign)) AS StoreAvailableQuantity,
> > goods.PriceIn AS GoodsTradeInPrice, SUM(IF(ISNULL(operations.Qtty *
> > operations.Sign), 0, operations.Qtty * operations.Sign)) * goods.PriceIn
> > AS GoodsTradeInSum FROM ((((objects, goods) LEFT JOIN operations ON
> > (objects.ID = operations.ObjectID AND goods.ID = operations.GoodID)) LEFT
> > JOIN goodsgroups ON ABS(goods.GroupID) = goodsgroups.ID) LEFT JOIN
> > objectsgroups ON ABS(objects.GroupID) = objectsgroups.ID) LEFT JOIN
> > vatgroups ON goods.TaxGroup = vatgroups.ID WHERE (operations.Date <=
> > '$curtime 00:00:00') AND (goods.Name LIKE concat('%', 'ц-ри', '%')) GROUP
> > BY goods.Code, goods.Name, goods.ID, goods.Measure1, objects.ID,
> > objects.Name, goods.PriceIn, vatgroups.VATValue) as T"
> >
> > CMD="mysql -h $HOST -u $DB_USER -p$DB_PASS -D$DB"
> >
> >
> > echo `$CMD << eof $QRY eof` > $LOGtmp
Attachment:
signature.asc
Description: Digital signature
_______________________________________________
Lug-bg mailing list
Lug-bg@xxxxxxxxxxxxxxxxxx
http://linux-bulgaria.org/mailman/listinfo/lug-bg
|