Latest post of the previous page:
Обработка luafar_init.lua включается/выключается в make-файле, это просто, но мне не понятно, как вы там сможете указать путь, с которого берётся sqlite3.dll. С помощью FFI что ли будете её заранее подгружать?Polygon - работа с файлами SQLite3
-
- Posts: 1351
- Joined: Fri 30 Nov, 2007 15:32
- Location: Крым
- Has thanked: 15 times
- Been thanked: 50 times
- Contact:
-
- Posts: 6718
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 34 times
- Been thanked: 503 times
Polygon - работа с файлами SQLite3
Вот бы ещё кто-то объяснил, чем это плохо.
Например, зависимости плагина LuaMacro лежат в папке Фара, и никто не жалуется.
Просто мне не понятно, какая выгода в том, что sqlite3.dll (которая в любом случае не будет поставляться с плагином), будет лежать в папке плагина, а не в папке Фара.
- DrKnS
- Posts: 6110
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 423 times
Polygon - работа с файлами SQLite3
Shmuel, LuaMacro не очень подходящий пример, т.к. входит в дистрибутив.
Для "сторонних" плагинов раскладывание зависимостей в неожиданные места может быть неудобно тем, что о них же ещё надо помнить - поставил, поигрался, удалил, а мусор остался.
Для "сторонних" плагинов раскладывание зависимостей в неожиданные места может быть неудобно тем, что о них же ещё надо помнить - поставил, поигрался, удалил, а мусор остался.
Polygon - работа с файлами SQLite3
Shmuel» да, по ffi.load("sqlite3") и так работало… 
хотел поэкспериментировать с подгрузкой расширений sqlite и посмотреть кто-как ищет модули/библиотеки.
захожу в базу сабжем, жму Ф6, ввожу
SELECT load_extension('mod_spatialite.dll', 'sqlite3_modspatialite_init');
получаю
полные пути в первом параметре ситуацию не меняют.
в плагине SQLiteDB ситуация аналогична.
расширение лежит тутже, в папке с базой в которую вхожу.
но по мониторингу файлов видно что до загрузки расширения и зависимостей файлов дело вообще не доходит.
если тутже в папке запускаю sqlite3.exe - расширение грузится как ожидалось.

хотел поэкспериментировать с подгрузкой расширений sqlite и посмотреть кто-как ищет модули/библиотеки.
захожу в базу сабжем, жму Ф6, ввожу
SELECT load_extension('mod_spatialite.dll', 'sqlite3_modspatialite_init');
получаю
Code: Select all
╔═════════ Polygon ═════════╗
║ Error reading database ║
║ Error: [1] not authorized ║
╟───────────────────────────╢
║ {OK} ║
╚═══════════════════════════╝
в плагине SQLiteDB ситуация аналогична.
расширение лежит тутже, в папке с базой в которую вхожу.
но по мониторингу файлов видно что до загрузки расширения и зависимостей файлов дело вообще не доходит.
если тутже в папке запускаю sqlite3.exe - расширение грузится как ожидалось.
-
- Posts: 6718
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 34 times
- Been thanked: 503 times
Polygon - работа с файлами SQLite3
tstr, в документации SQLite (https://www.sqlite.org/loadext.html) сказано, что по умолчанию загрузка расширений запрещена из соображений безопасности, а в утилите шелла (sqlite3.exe) разрешена.
В коде мне удалось загрузить это расширение, а как это сделать через F6 (и вообще всю тему расширений), буду изучать.
В коде мне удалось загрузить это расширение, а как это сделать через F6 (и вообще всю тему расширений), буду изучать.
-
- Posts: 6718
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 34 times
- Been thanked: 503 times
Polygon - работа с файлами SQLite3
Почитал про расширения, склоняюсь к тому, чтобы они были по умолчанию разрешены в плагине, наподобие как это сделано в sqlite3.exe.
Сначала думал это сделать опцией, но поскольку плагин поддерживает "пользовательские модули" (пока не документировано), а в них можно что угодно разрешать или запрещать и вообще делать с базами что угодно, то в такой опции, вроде бы, нет смысла.
Сначала думал это сделать опцией, но поскольку плагин поддерживает "пользовательские модули" (пока не документировано), а в них можно что угодно разрешать или запрещать и вообще делать с базами что угодно, то в такой опции, вроде бы, нет смысла.
-
- Posts: 6718
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 34 times
- Been thanked: 503 times
Polygon - работа с файлами SQLite3
tstr, для расширений сделана опция в диалоге конфигурации. Само расширение должно быть, например, на PATH.
При выполнении команды SELECT load_extension(.....) - если нет окошка с ошибкой - значит загрузилось.
При выполнении команды SELECT load_extension(.....) - если нет окошка с ошибкой - значит загрузилось.
- HaRT
- Moderator
- Posts: 10532
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 201 times
- Been thanked: 334 times
Polygon - работа с файлами SQLite3
Спасибо за плагин!
Пара пожеланий:
1. Формат SQL при экспорте таблицы — т.е. по сути SQL-дамп таблицы (т.е. код, который можно использовать, чтобы воссоздать таблицу с её нынешними данными). Некоторые реляционные СУБД предоставляют такую возможность из коробки.
2. Чтобы в выводилась также причина (или хотя бы код ошибки) — чтобы можно было понять, она corrupted, locked или ещё что…
Пара пожеланий:
1. Формат SQL при экспорте таблицы — т.е. по сути SQL-дамп таблицы (т.е. код, который можно использовать, чтобы воссоздать таблицу с её нынешними данными). Некоторые реляционные СУБД предоставляют такую возможность из коробки.
2. Чтобы в выводилась также причина (или хотя бы код ошибки) — чтобы можно было понять, она corrupted, locked или ещё что…
Фар есть инструмент, а не нянька. © 2009 DrKnS
Polygon - работа с файлами SQLite3
sqlite3 base.db .dump
или это надо делать обязательно из плагина?
Last edited by 2useven10 on Tue 04 Sep, 2018 16:30, edited 1 time in total.
- HaRT
- Moderator
- Posts: 10532
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 201 times
- Been thanked: 334 times
Polygon - работа с файлами SQLite3
Спасибо
Так ведь хочется дамп не всей базы, а только выбранных в панели таблиц.
Фар есть инструмент, а не нянька. © 2009 DrKnS
-
- Posts: 6718
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 34 times
- Been thanked: 503 times
Polygon - работа с файлами SQLite3
По поводу сообщения о невозможности открыть БД - ситуация такая:
Если подсунуть даже совсем левый файл, например в формате jpeg, то функция sqlite3_open_v2() благополучно возвращает SQLITE_OK и создаёт хэндл на открытую базу данных. Чтобы это побороть, плагин (за кадром) пытается читать таблицу sqlite_master и возвращает вышеприведенную ошибку, если не получается. Поэтому сообщение вот такое, не конкретное.
Если подсунуть даже совсем левый файл, например в формате jpeg, то функция sqlite3_open_v2() благополучно возвращает SQLITE_OK и создаёт хэндл на открытую базу данных. Чтобы это побороть, плагин (за кадром) пытается читать таблицу sqlite_master и возвращает вышеприведенную ошибку, если не получается. Поэтому сообщение вот такое, не конкретное.
- HaRT
- Moderator
- Posts: 10532
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 201 times
- Been thanked: 334 times
Polygon - работа с файлами SQLite3
Но остаётся вопрос: можем ли мы различить невалидную и залоченную базу. Казалось бы, невалидная не должна даже читаться, а залоченность должно быть возможно как-то проверить…
Фар есть инструмент, а не нянька. © 2009 DrKnS