powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FireDAC - при сохранении данных стал выдавать ошибку
22 сообщений из 22, страница 1 из 1
FireDAC - при сохранении данных стал выдавать ошибку
    #40112306
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
До этого работало нормально. Сегодня вдруг несколько запросов периодически стали выкидывать эту ошибку, отправляя на Exception.
Где эти параметры посмотреть?
На сервере max_allowed_packet = 16777216
Сам запрос совсем небольшой, состоит в основном из id-шников, цифровых значений и дат.
Код: sql
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.
UPDATE `cargo_card` SET
`id`=:id,
`contract_cargo_sub_id`=:contract_cargo_sub_id,
`sender_id`=:sender_id,
`receiver_id`=:receiver_id,
`scales_id`=:scales_id,
`shipment_id`=:shipment_id,
`cargo_marking_id`=:cargo_marking_id,
`object_type`=:object_type,
`cargo_card_number`=:cargo_card_number,
`pauzka`=:pauzka,
`cooperated`=:cooperated,
`weight_tara`=:weight_tara,
`weight_netto`=:weight_netto,
`total_weight_brutto`=:total_weight_brutto,
`weight_netto_doc`=:weight_netto_doc,
`weight_brutto_doc`=:weight_brutto_doc,
`cargo_places_doc`=:cargo_places_doc,
`weight_tara_doc`=:weight_tara_doc,
`weight_netto_fact`=:weight_netto_fact,
`weight_brutto_fact`=:weight_brutto_fact,
`cargo_places_fact`=:cargo_places_fact,
`gtn_number`=:gtn_number,
`gtn_date`=:gtn_date,
`conosament_number`=:conosament_number,
`customs_contract_number`=:customs_contract_number,
`customs_contract_date`=:customs_contract_date,
`customs_declaration`=:customs_declaration,
`additional_conditions`=:additional_conditions,
`fact_cost`=:fact_cost,
`dkd`=:dkd,
`sertificate_number`=:sertificate_number,
`currency_code`=:currency_code,
`finished`=:finished,
`owner_is_changed`=:owner_is_changed,
`created_at`=:created_at,
`updated_at`=:updated_at
WHERE (`id`=573831)
...
Рейтинг: 0 / 0
FireDAC - при сохранении данных стал выдавать ошибку
    #40112312
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
svnvlad,

написано же.
...
Рейтинг: 0 / 0
FireDAC - при сохранении данных стал выдавать ошибку
    #40112323
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
svnvlad,

написано же.

Неужели этот запрос занимает 16 мб?
...
Рейтинг: 0 / 0
FireDAC - при сохранении данных стал выдавать ошибку
    #40112325
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
svnvlad,

какая-нибудь строка.
...
Рейтинг: 0 / 0
FireDAC - при сохранении данных стал выдавать ошибку
    #40112368
Gluck99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvlad
Неужели этот запрос занимает 16 мб?
Таким упёртым людям помогать нет желания. Понятно и ежу, что текст запроса до присвоения параметров не может занимать > 16777216, сл-но, надо смотреть, какие значения принимают параметры. Т.е. проблема не в запросе, а в коде получения значений для параметров и их присвоении. Но этого кода вы не соизволили предоставить, сл-но, думайте дальше сами.
...
Рейтинг: 0 / 0
FireDAC - при сохранении данных стал выдавать ошибку
    #40112371
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А можно и просто поменять СУБД на такую, которая способна пересылать значения
более чем одним пакетом. MySQL не пуп земли...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FireDAC - при сохранении данных стал выдавать ошибку
    #40112384
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
... MySQL не пуп земли...

Кому как... вон, "наталья 87" пишет, что основная проблема у Firebird - хостинг с ним трудно найти... а c MySQL - найти легко. :)
...
Рейтинг: 0 / 0
FireDAC - при сохранении данных стал выдавать ошибку
    #40112385
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъа c MySQL - найти легко. :)

Ага, но при этом он будет shared, без доступа извне и через полгода закроется,
слив твои пароли и базу спамерам. Плавали, знаем.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FireDAC - при сохранении данных стал выдавать ошибку
    #40112426
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluck99
svnvlad
Неужели этот запрос занимает 16 мб?
Таким упёртым людям помогать нет желания. Понятно и ежу, что текст запроса до присвоения параметров не может занимать > 16777216, сл-но, надо смотреть, какие значения принимают параметры. Т.е. проблема не в запросе, а в коде получения значений для параметров и их присвоении. Но этого кода вы не соизволили предоставить, сл-но, думайте дальше сами.

Я пока не нашел способ увидеть итоговый запрос после присвоения параметров.
...
Рейтинг: 0 / 0
FireDAC - при сохранении данных стал выдавать ошибку
    #40112438
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
svnvlad
Gluck99
пропущено...
Таким упёртым людям помогать нет желания. Понятно и ежу, что текст запроса до присвоения параметров не может занимать > 16777216, сл-но, надо смотреть, какие значения принимают параметры. Т.е. проблема не в запросе, а в коде получения значений для параметров и их присвоении. Но этого кода вы не соизволили предоставить, сл-но, думайте дальше сами.

Я пока не нашел способ увидеть итоговый запрос после присвоения параметров.
Ёпта, а параметры ты увидеть тоже не можешь? Они сами собой формируются?
Оберни глючное место клиентского кода в try-except, и как поймаешь такое исключение - смотри параметры.
...
Рейтинг: 0 / 0
FireDAC - при сохранении данных стал выдавать ошибку
    #40112441
Фотография Kast2K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для просмотра запроса и его параметров можно воспользоваться Firedac Monitor

Инструкция:
https://coderoad.ru/21915973/FireDAC-%D0%BF%D0%BE%D0%BA%D0%B0%D0%B7%D0%B0%D1%82%D1%8C-SQL-%D0%BF%D0%BE%D1%81%D0%BB%D0%B5-%D1%80%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%B8%D1%8F-%D0%BC%D0%B0%D0%BA%D1%80%D0%BE%D1%81%D0%B0

всё прекрасно показывает.
...
Рейтинг: 0 / 0
FireDAC - при сохранении данных стал выдавать ошибку
    #40112460
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
svnvlad
пропущено...

Я пока не нашел способ увидеть итоговый запрос после присвоения параметров.
Ёпта, а параметры ты увидеть тоже не можешь? Они сами собой формируются?
Оберни глючное место клиентского кода в try-except, и как поймаешь такое исключение - смотри параметры.

Ага, сами собой
Код: 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.
  if FFind then
    begin // Найдено
      Q.SQL.Text := 'UPDATE `' + FTableName + '` SET';
      for I := 0 to FData.Count - 1 do
        begin
          if I < FData.Count-1 then
            s := ','
          else
            s := '';
          Q.SQL.Add('`' + FData[I] + '`=:' + FData[I] + s);
        end;

//      Q.SQL.Add(',`updated_at`=''' + updated_at + '''');

      if FWhere <> '' then
        Q.SQL.Add('WHERE ' + FWhere);

      for I := 0 to FData.Count - 1 do
        begin
          DataVal := PQValue(FData.Objects[I])^;
          case DataVal.TypeVal of
            0: begin
                 Q.ParamByName(FData[I]).AsString := DataVal.VString;
                 if DataVal.VString = '' then
                   Q.ParamByName(FData[I]).Value := Null;
               end;
            1: Q.ParamByName(FData[I]).LoadFromStream(DataVal.VStream, ftBlob);
            2: Q.ParamByName(FData[I]).AsDateTime := DataVal.VDateTime;
          end;
        end;

      try
        if not Q.Prepared then
          Q.Prepare;
//                 q.SQL.SaveToFile('e:\sql.txt');
        Q.ExecSQL;
        if rec_id > 0 then
          Result := rec_id
        else
          Result := 1;
      except
        on E: Exception do
          Error := ('error: ' + IntToStr(E.HelpContext) + ' text: ' + E.Message);

      end;
      Q.Close;
    end
...
Рейтинг: 0 / 0
FireDAC - при сохранении данных стал выдавать ошибку
    #40112507
Gluck99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvlad,
Ты что, самостоятельно не можешь вот эту строчку проверить?
Код: pascal
1.
1: Q.ParamByName(FData[I]).LoadFromStream(DataVal.VStream, ftBlob);

Наиболее вероятно, что тут какой-то неожидаемо большой блоб грузится. Проверять надо "DataVal", а не финальный запрос.
И научись использовать Format(), спагетти-конкатенация выглядит и читается ужасно.
Код: pascal
1.
2.
3.
Q.SQL.Text := Format('UPDATE `%s` SET ', [FTableName]);
{...}
Error := Format('error: %s'#13'text: %s', [IntToStr(E.HelpContext), E.Message]);
...
Рейтинг: 0 / 0
FireDAC - при сохранении данных стал выдавать ошибку
    #40112520
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluck99
svnvlad,
Ты что, самостоятельно не можешь вот эту строчку проверить?
Код: pascal
1.
1: Q.ParamByName(FData[I]).LoadFromStream(DataVal.VStream, ftBlob);

Наиболее вероятно, что тут какой-то неожидаемо большой блоб грузится. Проверять надо "DataVal", а не финальный запрос.
И научись использовать Format(), спагетти-конкатенация выглядит и читается ужасно.
Код: pascal
1.
2.
3.
Q.SQL.Text := Format('UPDATE `%s` SET ', [FTableName]);
{...}
Error := Format('error: %s'#13'text: %s', [IntToStr(E.HelpContext), E.Message]);


Глупый вопрос: а как проверять DataVal? При трассировке при наводке курсора появляется дебильная всплывающая строка в одну строку, которая уходит за пределы экрана, и увидеть полный текст никак невозможно. А в инспекторе до нее не достучишься из-за глубокой вложенности, и там в итоге ее просто нет. Выводить MessageBox-ом тоже не получается, потому что это отдельный .pas модуль без dfm.
...
Рейтинг: 0 / 0
FireDAC - при сохранении данных стал выдавать ошибку
    #40112523
Близнец1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvlad

Глупый вопрос: а как проверять DataVal? При трассировке при наводке курсора появляется дебильная всплывающая строка в одну строку, которая уходит за пределы экрана, и увидеть полный текст никак невозможно. А в инспекторе до нее не достучишься из-за глубокой вложенности, и там в итоге ее просто нет. Выводить MessageBox-ом тоже не получается, потому что это отдельный .pas модуль без dfm.


Записать в файл например.
...
Рейтинг: 0 / 0
FireDAC - при сохранении данных стал выдавать ошибку
    #40112527
Фотография Kast2K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot svnvlad#22396936]
Gluck99

Глупый вопрос: а как проверять DataVal? При трассировке при наводке курсора появляется дебильная всплывающая строка в одну строку, которая уходит за пределы экрана, и увидеть полный текст никак невозможно. А в инспекторе до нее не достучишься из-за глубокой вложенности, и там в итоге ее просто нет. Выводить MessageBox-ом тоже не получается, потому что это отдельный .pas модуль без dfm.


Код: pascal
1.
SizeOf(DataVal.vStream)


?
...
Рейтинг: 0 / 0
FireDAC - при сохранении данных стал выдавать ошибку
    #40112536
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvlad
Глупый вопрос: а как проверять DataVal? При трассировке при наводке курсора появляется дебильная всплывающая строка в одну строку, которая уходит за пределы экрана, и увидеть полный текст никак невозможно.
Вам нужен не текст, а размер DataVal.VStream.Size
svnvlad
Выводить MessageBox-ом тоже не получается, потому что это отдельный .pas модуль без dfm.
А какая связь между dfm и MessageBox
...
Рейтинг: 0 / 0
FireDAC - при сохранении данных стал выдавать ошибку
    #40112542
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_> А какая связь между dfm и MessageBox

Ну, в модуле формы "автоматически" модуль Dialogs в uses прописывается...но это не точно... :)
...
Рейтинг: 0 / 0
FireDAC - при сохранении данных стал выдавать ошибку
    #40112553
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_,

...модуль Windows в uses, в смысле...
:)
...
Рейтинг: 0 / 0
FireDAC - при сохранении данных стал выдавать ошибку
    #40112591
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ,

Dialogs.
Я обычно не вручную прописываю, а ставлю курсор на имя процедуры, нажимаю правой кнопкой мыши, и Refactor -> Find unit... И он сам подставляет в Uses.
Не всегда работает, иногда выдает ошибку, вот я и подумал, что невозможно.
* Не MessageBox, а ShowMessage.
...
Рейтинг: 0 / 0
FireDAC - при сохранении данных стал выдавать ошибку
    #40112598
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
svnvlad,

тогда да, без .dfm никак, никаких вариантов.
...
Рейтинг: 0 / 0
FireDAC - при сохранении данных стал выдавать ошибку
    #40112634
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
Ну, в модуле формы "автоматически" модуль Dialogs в uses прописывается...но это не точно... :)
Шаман!
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FireDAC - при сохранении данных стал выдавать ошибку
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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