На моем виртуальном сервере (Win Server 2012R2) я запускаю несколько программ TCL с базой данных sqlite3.
Все части TCL, sqlite, базы данных (~ 25.000 элементов) и кода находятся в одной общей папке C:\ данные, к которым я также могу получить доступ с моего локального компьютера (Win10) как диск S :.Еще несколько программ работают таким же образом, их запуск запланирован на ночь.
Код, теперь конкурирующий:
console show
set auto_path [file join [file dirname [info script]] "../lib"]
package require sqlite3
set datasource "./compdata.db3"
wm withdraw .
sqlite3 db $datasource
db eval {SELECT * FROM master_data;} {
puts "$x1, $x2, $x3, $x4" ; update
}
db close
puts stderr ">>>Ok<<<"
exit
отлично работает локально на сервере и запускается с ПК.
Команда запуска на сервере:
call c:\data\tcl858\bin\wish85.exe databasetest.t85
Команда запуска на локальном ПК:
call s:\tcl858\bin\wish85.exe databasetest.t85
Если я добавляю ORDER BY, она запускается только при запуске с ПК.
db eval {SELECT * FROM master_data ORDER BY x1;} {
puts "$x1, $x2, $x3, $x4" ; update
}
При запуске на сервере появляется сообщение об ошибке:
Невозможно открыть файл базы данных при выполнении «db eval {SELECT * FROM master_data ORDER BY x1;} {put»$ x1, $ x2, $ x3, $ x4 "; update}".