Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
Столкнулся с проблемой. Надо портировать прогу, работающую с FB, под Linux. Компоненты IBX из XE2, немного допиленные в части совместимости. D10.3, ОС Debian 10, FB 3 Подключение проходит, но при выполнении любого запроса вылетает "EIBClientError: Unknown SQL Data type (0)". Протрейсив, понимаю, что ошибка кидается в TIBXSQLDA.Initialize, когда SqlDef неожиданный (0). Код простейший Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. Может, кто-нибудь сталкивался с такой проблемой и решал ее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2021, 12:35 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
02.04.2021 12:35, Fr0sT-Brutal пишет: > > Компоненты IBX из XE2, возьми лучше из Лазаря. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2021, 12:40 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий 02.04.2021 12:35, Fr0sT-Brutal пишет: > > Компоненты IBX из XE2, возьми лучше из Лазаря. Попробую, спс. Надеюсь, не сильно заточены под Лазарь. Еще вариант взять из RTL 10.3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2021, 13:18 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
фиг его знает что лучше. кроссплатформенность в Delphi весьма условна - если (утрируя) кнопочки и формочки ещё можно "туда-сюда", то всё остальное обычно фигушки... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2021, 13:26 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
Fr0sT-Brutal, Есть знакомые люди, которые переводили с Win на Linux проект. Но всё делали через Wine. И работает нормально. Это не вариант? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2021, 13:29 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
Romka-Fes Fr0sT-Brutal, Есть знакомые люди, которые переводили с Win на Linux проект. Но всё делали через Wine. И работает нормально. Это не вариант? Примерно как поставить в Запорожец двигатель от BMW. Наверно можно. Но зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2021, 13:31 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
makhaon Примерно как поставить в Запорожец двигатель от BMW. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2021, 13:35 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
Romka-FesЕсть знакомые люди, которые переводили с Win на Linux проект. Но всё делали через Wine. То есть процесс "перевода" свёлся к "установить WINE, запустить готовый экзешник". РосНаноРаспил. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2021, 13:35 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
Romka-Fes Fr0sT-Brutal, Есть знакомые люди, которые переводили с Win на Linux проект. Но всё делали через Wine. И работает нормально. Это не вариант? У меня либа, которую тягают другие проекты... и в целом Wine не особо стабилен и быстр для прода. Попробовал с IBX из RTL - есть контакт! Хотя эти динозавры до сих пор "не знают" о существовании Firebird :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2021, 13:35 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
Fr0sT-Brutal Попробовал с IBX из RTL - есть контакт! Хотя эти динозавры до сих пор "не знают" о существовании Firebird :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2021, 13:36 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Была задача - запустить проект на Linux. Самый простой способо - Wine. Никто код не менял вообще. Никаких распилов. As is. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2021, 13:55 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Но потом таки делали переход с VCL на FireMonkey. И там вроде бы было веселей с доступом к FB. Но не менее чем 3.0 кажись. Тут вопрос - нужен только IBX - или другие компоненты доступа к БД приемлемы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2021, 13:57 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
Fr0sT-Brutal Хотя эти динозавры до сих пор "не знают" о существовании Firebird :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2021, 14:15 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
Поковырял IBX от Лазаря - там много всяких веселостей предвидится. Уже наткнулся на TRTLCriticalSection и модуль Registry (в линуксе-то он накой??). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2021, 14:34 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ Fr0sT-Brutal Хотя эти динозавры до сих пор "не знают" о существовании Firebird :( Сделал за две минуты, добавив метод SetLibraryPath в исходники IBX. Знаешь метод без модификации либо копирования исходников IBX? Поделись, как. Эти собаки спрятали класс TIBServerLibrary внутрь юнита, и от него не наследуешься. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2021, 14:37 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
02.04.2021 14:37, Fr0sT-Brutal пишет: > Сделал за две минуты, добавив метод SetLibraryPath в исходники IBX. > Знаешь метод без модификации либо копирования исходников IBX? Поделись, как. > Эти собаки спрятали класс TIBServerLibrary внутрь юнита, и от него не наследуешься. у них всё так. сделай форк и не парься. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2021, 14:42 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
Fr0sT-Brutal Поделись, как 2. Изменяешь метод LibraryName 3. В конце модуля пишешь Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 3. Модуль загоняешь в пакет, пакет инсталлируешь в среду Можно еще добавить в пакет такой класс Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2021, 16:56 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий фиг его знает что лучше. кроссплатформенность в Delphi весьма условна - если (утрируя) кнопочки и формочки ещё можно "туда-сюда", то всё остальное обычно фигушки... Делфи позволяет не только десктопные приложения собирать под Linux, но еще и системные демоны (по аналогии с виндовскими сервисами). Также работает доступ к железу, например к COM-портам и USB. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2021, 17:45 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ 1. Копируешь класс TIBServerLibrary в TFBServerLibrary 2. Изменяешь метод LibraryName Вариант, спасибо. Не нравится, что нужно дублировать, хотя возможность применения совместно со стоковой либой - это плюс. Пока сделал через форк и добавление Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2021, 17:49 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
Fr0sT-Brutalq := TIBSQL.Create(nil); q.Database := DB; q.Transaction := TIBTransaction.Create(q); вроде как не ошибка, но нафиг такое надо - вообще-то должно быть наоборот - запрос должен принадлежать транзакции. то есть, в коннекте есть транзакциИ, в транзакции есть запросЫ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2021, 01:08 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
kdv нафиг такое надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2021, 12:28 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Но isc_dsql_alloc_statement2 принимает параметром хендл соединения, а не базы што??? у клиента хэндл соединения и есть "хэндл базы". У клиента вообще нет никакого "хэндла базы" и не может быть, ни в обычном клиент-сервере, ни в embedded. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2021, 12:55 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
kdv, автору клиента хэндл соединения и есть "хэндл базы". если непонятно, то не "есть и есть", а хэндл соединения = соединение с конкретной БД. "Хэндла базы" у клиента нет как такового. Оно есть только у сервера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2021, 12:58 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_isc_dsql_alloc_statement2 А за его применение к переменным в динамической памяти надо отдельно бить по голове. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2021, 13:00 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ Но isc_dsql_alloc_statement2 принимает параметром хендл соединения, а не базы kdv хэндл соединения = соединение с конкретной БД. "Хэндла базы" у клиента нет как такового. Т.е. для создания стейтмента нужна и транзакция (prepare, execute) и соединение (alloc). И соединение из транзакции не извлекается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2021, 15:13 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Т.е. для создания стейтмента нужна и транзакция (prepare, execute) и соединение (alloc). И соединение из транзакции не извлекается. и ? В любом случае схема связей древовидная: Соединение->Транзакции->Запросы Запрос работает в какой-то транзакции какого-то соединения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2021, 01:01 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
kdvВ любом случае схема связей древовидная: Соединение->Транзакции->Запросы Авотфиг. Двухфазные транзакции по прежнему поддерживаются, так что это треугольник: запрос привязан к соединению, но для выполнения ему нужна транзакция, к которой привязано в том числе и это соединение. Можно даже попытаться выполнить его в транзакции, которая совсем с левого соединения. Будет весело. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2021, 01:11 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
kdv Fr0sT-Brutalq := TIBSQL.Create(nil); q.Database := DB; q.Transaction := TIBTransaction.Create(q); вроде как не ошибка, но нафиг такое надо - вообще-то должно быть наоборот - запрос должен принадлежать транзакции. то есть, в коннекте есть транзакциИ, в транзакции есть запросЫ. *исправлено - утро, понедельник, не проснулся еще* Хм, тут неоднозначно - запрос выполнится и останется, а транзакция закроется. АПИ-подход не очень ложится на ООП, т.к. хэндлы создаются и закрываются, а объекты остаются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2021, 10:22 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
Fr0sT-Brutalтут неоднозначно - запрос выполнится и останется, а транзакция закроется. да, запрос может оставаться в prepared-состоянии не будучи привязанным ни к какой транзакции. Ничего страшного. Его можно выполнить в другой транзакции авторАПИ-подход не очень ложится на ООП, т.к. хэндлы создаются и закрываются, а объекты остаются А вот тут мысль неправильная. Если завершается транзакция, то как "экземпляр объекта" она должна кончиться, потому что ее уже не существует. Но ведь никто в здравом уме не уничтожает IBTransaction (например) по ее закрытии. Ну или IBDatabase - в закрытом коннекте ничего не существует, коннекта нет. Так что я тут никакого конфликта не вижу. Поэтому в состоянии Closed хэндла нет, а в Open - хэндл есть. p.s. насчет двухфазных транзакций - это скорее исключение, связанное с "фишкой C", когда в функцию можно передать произвольное количество параметров (хэндлов транзакций). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2021, 10:42 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
kdv А вот тут мысль неправильная. Если завершается транзакция, то как "экземпляр объекта" она должна кончиться, потому что ее уже не существует. Но ведь никто в здравом уме не уничтожает IBTransaction (например) по ее закрытии. Ну или IBDatabase - в закрытом коннекте ничего не существует, коннекта нет. Так что я тут никакого конфликта не вижу. Поэтому в состоянии Closed хэндла нет, а в Open - хэндл есть. Ну, тут сама либа диктует структуру. Из sql есть ссылка на транзакцию, а не наоборот. Или ты про то, чтобы отдельно создать транзакцию, ее где-то хранить и присваивать sql-ям? Это ведь надо организовывать хранение. В моей структуре sql:транзакция 1:1, т.ч. иерархия не нарушена, зато кода меньше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2021, 11:26 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
kdvв функцию можно передать произвольное количество параметров (хэндлов транзакций). Хэндлов коннектов. Ибо это коннекты добавляются в транзакцию, а не наоборот. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2021, 12:39 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
Fr0sT-Brutal, ну что за ... А как еще узнать, к какой транзакции прилеплен запрос? В каком коннекте работает транзакция? Потому у sql ссылка на ОДНУ транзакцию, а у транзакции - СПИСОК привязанных к ней sql (и у коннекта тоже список транзакций, а не одна, как в тех серверах, которые такое не умеют). Ну посмотри хоть в mon$, там что, запросы первоочередные? Нет mon$attachments->mon$transactions->mon$statements. всё точно так же, как я рассказываю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2021, 13:37 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
kdvу транзакции - СПИСОК привязанных к ней sql (и у коннекта тоже список транзакций Не совсем. У транзакции - список курсоров, а не запросов. И список коннектов. Связь коннекты-транзакции это многие-ко-многим. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2021, 13:40 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
Странный спор какой-то. Есть соединение, к нему привязаны стейтменты. Чтобы создать (препарировать) стейтмент, нужна транзакция, и чтобы выполнить его - тоже нужна транзакция (не обязательно та, что использовалась при создании). Довольно удобно, когда к объектам типа TIBSQL привязан объект TIBTransaction. Когда транзакция закроется - привязка не уйдет, и когда она снова откроется (на самом деле, внутри TIBTransaction создастся новая транзакция) - не надо ничего снова привязывать, стейтмент автоматически может выполниться уже с новым хэндлом транзакции. Но можно и менять транзакцию стэйтменту, просто переприсвоением объекта TIBTransaction, если это удобно. Не вижу тут никакой особой разницы с принципом работы API. Наоборот, только упрощение и удобство. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2021, 14:40 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
kdv Fr0sT-Brutal, ну что за ... А как еще узнать, к какой транзакции прилеплен запрос? В каком коннекте работает транзакция? Потому у sql ссылка на ОДНУ транзакцию, а у транзакции - СПИСОК привязанных к ней sql (и у коннекта тоже список транзакций, а не одна, как в тех серверах, которые такое не умеют). Ну посмотри хоть в mon$, там что, запросы первоочередные? Нет mon$attachments->mon$transactions->mon$statements. всё точно так же, как я рассказываю. А можешь накидать хотя бы примерно кодом свой идеальный вариант? А то что-то я не вкурю, как ты предлагаешь делать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2021, 15:11 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
Fr0sT-Brutal, я предложил в том куске кода поменять направленность логики. Не от запроса к транзакции, а наоборот. По связям объектов - чем IBX не устраивает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2021, 15:14 |
|
||
|
IBX под Linux
|
|||
|---|---|---|---|
|
#18+
kdv Fr0sT-Brutal, я предложил в том куске кода поменять направленность логики. Не от запроса к транзакции, а наоборот. По связям объектов - чем IBX не устраивает? Хм. То есть предлагаешь создать тр-ю, создать sql, присвоить тр-ю sql-ю? Можно, конечно... список тр-ий, как я посмотрел, все равно сидит у database внутре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2021, 16:44 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2037438]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
180ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 15ms |
| total: | 308ms |

| 0 / 0 |
