Я хочу автоматически запустить 1 файл Demfile.pl с помощью crontab (Centos 7). Однако / var / spool / mail / root отправляет почту в журнал следующим образом - PullRequest
0 голосов
/ 14 мая 2019

Я хочу автоматически запустить 1 файл Demfile2.pl с crontab (Centos 7).Однако /var/spool/mail/root отправьте письмо в журнал следующим образом:

DBD::SQLite::db do failed: no such table: HISTORY1 at /root/perl/test/Demfile2.pl line 31.
DBD::SQLite::db do failed: no such table: HISTORY1 at /root/perl/test/Demfile2.pl line 31.

Я не знаю почему: ((Это мой код:

use DBI; 
my $driver = "SQLite"; 
my $database = "test.db"; 
my $dsn = "DBI:$driver:dbname=$database"; 
my $userid = ""; 
my $password = ""; 
my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 }) or die $DBI::errstr; 
print "Opened database successfully\n"; 
$dir = "/root/perl/test*"; 
my @file = glob($dir);
@files = glob("test"); 
$temp = 0; 
$size = @file; 
$tempsize = 0; 
for (my $i = 0; $i < $size; $i++){ 
    print @file[$i]; 
    $temp++; 
    my $filesize = -s "@file[$i]"; 
    print "$filesize\n"; 
    $tempsize += $filesize; 
    my $now = date "+%Y-%m-%d//%H-%M-%S" | tr -d "\n"; 
    my $stmt = qq(INSERT INTO HISTORY1 (ID, TIME_NOW, TEN_FILE, SO_FILE, SIZE, HETHONG)VALUES ($i, '$now', '$file', '$tempsize', '$tempsize', 'A')); 
    my $rv = $dbh->do($stmt) or die $DBI::errstr; 
    print "Records created successfully\n";
} 
$dbh->disconnect();
print"\n";
print "so file $temp\n";
print "total size $tempsize\n";

1 Ответ

1 голос
/ 15 мая 2019

Не знаю почему: ((

Но сообщение об ошибке довольно ясно.

нет такой таблицы: ИСТОРИЯ1

Так что мне кажется, что ваш файл базы данных (test.db) не содержит схему базы данных, которую вы думаете, что она делает. Вы можете проверить эту теорию, используя инструмент командной строки SQLite, sqlite3. Попробуйте выполнить следующие команды:

$ sqlite3 test.db
sqlite> .tables

Это даст вам список таблиц в вашем файле test.db. Надеюсь, вы увидите «ИСТОРИЮ1», перечисленную там.

Еще одна вещь, которую нужно проверить. Вы запускаете это из правильного каталога? Кажется, ваш код предполагает, что он запускается из каталога, содержащего файл test.db. Если вы запустите свой код из любого другого каталога, я думаю, что он создаст новый пустой файл базы данных, который, очевидно, не будет содержать ваши таблицы.

...