Russian Apache Switch to English
Switch to Russian koi8-r
windows=1251
cp-866
iso8859-5
Russian Apache Как это работает Рекоммендации Где взять Как установить Как настроить Статус и поддержка
Краткий обзор FAQ Список рассылки Благодарности Поиск по серверу Powered by Russian Apache
Russian Apache mailing list archive (apache-rus@lists.lexa.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[apache-talk] Problem with using LOAD DATA INFILE



Это не совсем по Apache, но дело в том, что я уже полностью лишившись
надежды, допускаю, что это может и его вина.


У меня очень странная ситуация.

Есть один срипт import.cgi, который запизивает данные в базу данных mysql
с помощью LOAD DATA INFILE.

Есть другой, который  делает тоже самое, ноне проводит предварительной
подготовки файлов с данными, а пользуется тем, что придоговил import.cgi.
Зовут ЭТОТ срипт: aimport.cgi

Import.cgi получает zip файл через http upload, распаковывает его в
директорию,
и для каждого .dat файла прогоняет функцию импорта с LOAD DATA INFIL. - без
проблем.

КОгда же запускаем aimport.cgi с той же cgi диреткории, чтобы он просто
повотрил
импорт тех распакованных файлов - хрен - вываливается с :

Can't get stat of '/hosts/ubex.ru/admin/curi/rates.dat' (Errorcode: 13)

Права и владельцы, ПО:

hosts, server, curi - mode 750,  owner: ubex, group: ubex
rates.dat - 666, owner: ubex, group: ubex
apache is run as: root with suEXEC (so, all scripts execute as ubex.ubex)
mysql is run as : mysql.mysql
database, db user db password are the same for both scripts (read from the
same config file)
apache: 1.3.9
mysql: 3.23.24
OS: FreeBSD 4.1.1-stable


Я решил, что что-то не так с правами или effective/real uid/gid. Вывел эту
информацию
прямо перед выполнением запроса:

import.cgi:
Real user id: 5012 Real group id: 5012 5012 5012
Eff user id : 5012 Eff  group id:5012 5012 5012
/hosts/ubex.ru/admin/curi/rates.dat
134407,1064442,33206,1,5012,5012,0,0,970932306,970932306,970935971,8192,0

amport.cgi
Real user id: 5012 Real group id: 5012 5012 5012
Eff user id : 5012 Eff  group id:5012 5012 5012
/hosts/ubex.ru/admin/curi/rates.dat
134407,1064442,33206,1,5012,5012,0,0,970935971,970932306,970935971,8192,0

Для файлов выдается массив stat($file):
33206= mode 100666
5012 - uid of ubex
5012 - gid of ubex


Функция импорта простая до нельзя:

# import one table from a file
sub import_table {
        my $myname="import_table";
        my $sql;
        my $sth;
        my $table=$_[0];
        my $a=0;

# debug data
warn "Real user id: $< Real group id: $(\n";
warn "Eff user id : $> Eff  group id:$)\n";
$f=$CONFIG{'CURDIR'}.'/'.$table.'.dat';
@aa=stat($f);$"=',';warn "$f @aa\n";


        $sql="LOAD DATA INFILE \'$CONFIG{'CURDIR'}/".$table.".dat\' REPLACE
INTO TABLE $table";
        unless ($sth=$dbh->prepare($sql)){die "$DBI::errstr,$myname\n";}
        unless ($a=$sth->execute()){die "$DBI::errstr,$myname\n";}
        $a=$sth->rows;
        $sth->finish;
        if ($a>0){warn "    $a record(s) in $table\n";}
        return $a;
}

Я уже ничего не понимаю. Или это должно работать в обоих сриптах или вообще
не должно. Ведь
условия перед LOAD DATA INFILE одни и те же.

Есть мысли?

Артем


=============================================================================
=               Apache-Talk@xxxxxxxxxxxxx mailing list                      =
Mail "unsubscribe apache-talk" to majordomo@xxxxxxxxxxxxx if you want to quit.
=       Archive avaliable at http://www.lexa.ru/apache-talk                 =






Спонсоры сайта:

[ Russian Apache ] [ Как это работает ] [ Рекомендации ] [ Где взять ] [ Как установить ] [ Как настроить ] [ Статус и поддержка ] [ Краткий обзор ] [ FAQ ] [ Список рассылки ] [ Благодарности ] [ Поиск по серверу ] [ Powered by Russian Apache ] [ Apache-talk archive ]

"Russian Apache" includes software developed by the Apache Group for use in the Apache HTTP server project (http://www.apache.org/) See Apache LICENSE.
Copyright (C) 1995-2001 The Apache Group. All rights reserved.
Copyright (C) 1996 Dm. Kryukov; Copyright (C) 1997-2009 Alex Tutubalin. Design (C) 1998 Max Smolev.