powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FireDAC, FireBird, баг AutoCommit.
16 сообщений из 16, страница 1 из 1
FireDAC, FireBird, баг AutoCommit.
    #39901754
SQLIntento
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Используется связка Firebird 3.0 + Delphi XE8 + FireDAC. Есть необходимость выполнения ad hoc запросов. Поэтому нельзя определиться заранее, что использовать (ExecSQL или Open). Использование OpenOrExecute приводит к багу при стандартных настройках AutoCommit: после создания таблицы она не видна (AutoCommit не сработал). Воспроизведение:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
procedure TForm1.Button1Click(Sender: TObject);
begin
  FDQuery1.SQL.Text := 'create table AAA(A int);';
  FDQuery2.SQL.Text := 'insert into AAA(A) values (1);';

  try
    FDConnection1.Connected := True;
    FDQuery1.OpenOrExecute();

    // SQL error code = -204
    // Table unknown
    FDQuery2.OpenOrExecute();

  finally
    FDQuery1.Close();
    FDQuery2.Close();
    FDConnection1.Connected := False;
  end;
end;



Чтобы обойти этот баг, в настоящее время использую ручное управление транзакциями:

Код: vbnet
1.
2.
3.
    FDConnection1.TxOptions.AutoCommit := False; 
    FDConnection1.TxOptions.AutoStart := False;
    FDConnection1.TxOptions.AutoStop := False;



Можно ли как-нибудь решить проблему, не переходя к ручному управлению транзакциями?
...
Рейтинг: 0 / 0
FireDAC, FireBird, баг AutoCommit.
    #39901762
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
12.12.2019 11:38, SQLIntento пишет:
> Можно ли как-нибудь решить проблему, не переходя к ручному управлению транзакциями?

остыпьте и мне.
я тоже поржу.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FireDAC, FireBird, баг AutoCommit.
    #39901779
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQLIntento
Используется связка Firebird 3.0 + Delphi XE8 + FireDAC. Есть необходимость выполнения ad hoc запросов. Поэтому нельзя определиться заранее, что использовать (ExecSQL или Open). Использование OpenOrExecute приводит к багу при стандартных настройках AutoCommit: после создания таблицы она не видна (AutoCommit не сработал). Воспроизведение:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
procedure TForm1.Button1Click(Sender: TObject);
begin
  FDQuery1.SQL.Text := 'create table AAA(A int);';
  FDQuery2.SQL.Text := 'insert into AAA(A) values (1);';

  try
    FDConnection1.Connected := True;
    FDQuery1.OpenOrExecute();

    // SQL error code = -204
    // Table unknown
    FDQuery2.OpenOrExecute();

  finally
    FDQuery1.Close();
    FDQuery2.Close();
    FDConnection1.Connected := False;
  end;
end;



Чтобы обойти этот баг, в настоящее время использую ручное управление транзакциями:

Код: vbnet
1.
2.
3.
    FDConnection1.TxOptions.AutoCommit := False; 
    FDConnection1.TxOptions.AutoStart := False;
    FDConnection1.TxOptions.AutoStop := False;



Можно ли как-нибудь решить проблему, не переходя к ручному управлению транзакциями?
разве для DDL-выражений нужен commit?
...
Рейтинг: 0 / 0
FireDAC, FireBird, баг AutoCommit.
    #39901781
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
12.12.2019 12:12, Квейд пишет:
> разве для DDL-выражений нужен commit?

коммит нужен всегда.
но при определённых условиях он может выполняться автоматом.
у Оракла он автомат.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FireDAC, FireBird, баг AutoCommit.
    #39901826
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQLIntento
Можно ли как-нибудь решить проблему, не переходя к ручному управлению транзакциями?

SQLIntento
Код: pascal
1.
    // Table unknown


Подозреваю, что дак использует метаданные, загруженные при коннекте.
Создал табличку - выполни реконнект. А лучше в рантайме не создавай.
...
Рейтинг: 0 / 0
FireDAC, FireBird, баг AutoCommit.
    #39901835
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
12.12.2019 13:38, ёёёёё пишет:
> Создал табличку - выполни реконнект.


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FireDAC, FireBird, баг AutoCommit.
    #39901845
SQLIntento
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ёёёёё

Создал табличку - выполни реконнект. А лучше в рантайме не создавай.


В программу для администраторов приложения включено средство администрирования СУБД, с которым работает приложение. Оно среди прочего даёт возможность набрать в редакторе произвольные запросы и выполнить их. Поэтому неизвестно, какие именно запросы (create, insert, select, ...) будет выполнять администратор приложения. В настоящий момент из-за описанного бага был осуществлён переход к ручному управлению транзакциями. В начале любого сценария выполняется "set transaction", после выполнения DDL выполняются последовательно "commit" и "set transaction". Это не очень удобно, поэтому и задал вопрос о возможности исправления бага FireDAC при работе в режиме AutoCommit.
...
Рейтинг: 0 / 0
FireDAC, FireBird, баг AutoCommit.
    #39901848
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
12.12.2019 14:02, SQLIntento пишет:
> в редакторе произвольные запросы и выполнить их.
> Поэтому неизвестно, какие именно запросы (create, insert, select, ...)

уже смешно
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FireDAC, FireBird, баг AutoCommit.
    #39901850
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQLIntento
неизвестно, какие именно запросы (create, insert, select, ...) будет выполнять администратор

SQLIntento
В программу для администраторов приложения включено средство администрирования СУБД

А зачем вы создали приложение, которое позволяет вводить запросы, которые оно не может обработать?
И нафига сие вообще было делать, если есть IBExpert?
...
Рейтинг: 0 / 0
FireDAC, FireBird, баг AutoCommit.
    #39901862
SQLIntento
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ёёёёё

А зачем вы создали приложение, которое позволяет вводить запросы, которые оно не может обработать?


Не может только при использовании AutoCommit. Поэтому в данный момент AutoCommit не используется, произвольные запросы обрабатываются. Единственный минус, что при администрировании неудобно каждый раз писать "set transaction" и "commit".

ёёёёё

И нафига сие вообще было делать, если есть IBExpert?


От приложения требовалось предоставить встроенную функциональность по администрированию.
...
Рейтинг: 0 / 0
FireDAC, FireBird, баг AutoCommit.
    #39901868
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
12.12.2019 14:22, SQLIntento пишет:
>
> От приложения требовалось предоставить встроенную функциональность по администрированию.

детский сад какой-то.
ну, или курсач.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FireDAC, FireBird, баг AutoCommit.
    #39901882
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQLIntento
Единственный минус, что при администрировании неудобно каждый раз писать "set transaction" и "commit".

В IBExpert можно подсмотреть, как сделано. Там тоже "всё вручную".
...
Рейтинг: 0 / 0
FireDAC, FireBird, баг AutoCommit.
    #39901885
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
FireDAC, FireBird, баг AutoCommit.
    #39901887
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Квейд
разве для DDL-выражений нужен commit?
от субд уж зависит
...
Рейтинг: 0 / 0
FireDAC, FireBird, баг AutoCommit.
    #39902074
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
12.12.2019 14:48, vavan пишет:
> от субд уж зависит

и от инструмента тоже.
к примеру, в firebird-овом isql режим AutoCommit DDL включён по умолчанию.
и может быть отключен по желанию командой
Код: sql
1.
SET AUTODDL OFF;


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FireDAC, FireBird, баг AutoCommit.
    #39902319
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
от инструмента тоже
в некоторых никакой инструмент не способен изменить картины
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FireDAC, FireBird, баг AutoCommit.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]