|
|
|
Delphi Rio 10.3 FireDac MySQL Commands out of sync; you can't run this command now
|
|||
|---|---|---|---|
|
#18+
Всем привет! Когда-то уже сталкивался с подобной проблемой и пришлось переходить на ZEOS компоненты. Прошло более 5 лет и вновь пришлось столкнуться с MySQL, но теперь уже использую компоненты FireDAC и хотелось бы на них и остаться. Приложение работает с хранимыми процедурами. Пытаюсь запустить вот так: Код: pascal 1. 2. Первый раз она отработает и всё ок, но второй запуск вернет ошибку: "Commands out of sync; you can't run this command now". Любой запуск процедуры, которая возвращает результат. Погуглил и выяснил, якобы не чистится результат предыдущего результата и с этим связана ошибка. Тогда вопрос, а как его скинуть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2020, 00:09 |
|
||
|
Delphi Rio 10.3 FireDac MySQL Commands out of sync; you can't run this command now
|
|||
|---|---|---|---|
|
#18+
Чисто из любопытства: ты и двери всегда закрываешь прежде чем выйти из дома? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2020, 00:26 |
|
||
|
Delphi Rio 10.3 FireDac MySQL Commands out of sync; you can't run this command now
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Чисто из любопытства: ты и двери всегда закрываешь прежде чем выйти из дома? Хорошо. Я думаю так будет понятнее. Это предыдущий запрос. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. А прописывая всегда Close, я никогда не получу ошибку, если где-то компонент остался открытым. Так как для все подобных запросов я использую один. Которые не требуется для результатирующего постоянного набора. Проще говоря, выполнять всякие вставки, апдейты, удаления и запрос статусов я всегда делаю через один квери. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2020, 00:34 |
|
||
|
Delphi Rio 10.3 FireDac MySQL Commands out of sync; you can't run this command now
|
|||
|---|---|---|---|
|
#18+
Евгений Стронгя никогда не получу ошибку, если где-то компонент остался открытым. Ага, ты получишь ошибку если он уже был закрыт или даже никогда не имел result set-а. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2020, 00:47 |
|
||
|
Delphi Rio 10.3 FireDac MySQL Commands out of sync; you can't run this command now
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Евгений Стронгя никогда не получу ошибку, если где-то компонент остался открытым. Ага, ты получишь ошибку если он уже был закрыт или даже никогда не имел result set-а. Вероятность намного выше, что ты его забудешь где-то закрыть. Нежели начать код с его закрытия. По крайней мере это нормальная практика и в примерах она как раз и демонстрируется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2020, 01:17 |
|
||
|
Delphi Rio 10.3 FireDac MySQL Commands out of sync; you can't run this command now
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Евгений Стронгя никогда не получу ошибку, если где-то компонент остался открытым. Ага, ты получишь ошибку если он уже был закрыт или даже никогда не имел result set-а. Хотя может ты и прав и нужно закрывать запрос сразу после получения результата, чтобы он не "висел" открытым до следующего старта. Но это уже ладно... Проблема у меня сейчас совершенно с другим связана. Прошло более 5 лет, а проблема актуальна до сих пор) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2020, 01:24 |
|
||
|
Delphi Rio 10.3 FireDac MySQL Commands out of sync; you can't run this command now
|
|||
|---|---|---|---|
|
#18+
Евгений СтронгВероятность намного выше, что ты его забудешь где-то закрыть. Нежели начать код с его закрытия. это, типа, новый стиль программирования? Объект перед созданием надо уничтожить? Вы бы тогда лучше писали что-то типа Код: pascal 1. 2. чтобы найти места, в которых вы свои датасеты не закрываете вовремя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2020, 01:50 |
|
||
|
Delphi Rio 10.3 FireDac MySQL Commands out of sync; you can't run this command now
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Евгений Стронгя никогда не получу ошибку, если где-то компонент остался открытым. Ага, ты получишь ошибку если он уже был закрыт или даже никогда не имел result set-а. Не знаю как в энтих ваших фиредаках, а в фибах лишний .Сlose на TFIBQuery никогда ошибок не выдавал. Независимо от того, открыт он был или нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2020, 04:38 |
|
||
|
Delphi Rio 10.3 FireDac MySQL Commands out of sync; you can't run this command now
|
|||
|---|---|---|---|
|
#18+
kdv Евгений СтронгВероятность намного выше, что ты его забудешь где-то закрыть. Нежели начать код с его закрытия. это, типа, новый стиль программирования? Объект перед созданием надо уничтожить? Вы бы тогда лучше писали что-то типа Код: pascal 1. 2. чтобы найти места, в которых вы свои датасеты не закрываете вовремя. Это не новый стиль - это правильный стиль! И не понятна попытка умничать тут совсем не к месту, не зная даже кода, который написан перед закрытие. Форум превратился в каких-то осуждающих бабок, вместо того, чтобы ответить по теме. Вот тебе кусок из примера: Свойство SQL - вероятно, самая важная часть TQuery. Доступ к этому свойству происходит либо через Инспектор Объектов во время конструирования проекта (design time), или программно во время выполнения программы (run time). Интересней, конечно, получить доступ к свойству SQL во время выполнения, чтобы динамически изменять запрос. Например, если требуется выполнить три SQL запроса, то не надо размещать три компонента TQuery на форме. Вместо этого можно разместить один и просто изменять свойство SQL три раза. Наиболее эффективный, простой и мощный способ - сделать это через параметризованные запросы, которые будут объяснены в следующей части. Однако, сначала исследуем основные особенности свойства SQL, а потом рассмотрим более сложные темы, типа запросов с параметрами. Свойство SQL имеет тип TStrings, который означает что это ряд строк, сохраняемых в списке. Список действует также, как и массив, но, фактически, это специальный класс с собственными уникальными возможностями. В следующих нескольких абзацах будут рассмотрены наиболее часто используемые свойства. При программном использовании TQuery, рекомендуется сначала закрыть текущий запрос и очистить список строк в свойстве SQL: Query1.Close; Query1.SQL.Clear; Обратите внимание, что всегда можно “безопасно” вызвать Close. Даже в том случае, если запрос уже закрыт, исключительная ситуация генерироваться не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2020, 09:31 |
|
||
|
Delphi Rio 10.3 FireDac MySQL Commands out of sync; you can't run this command now
|
|||
|---|---|---|---|
|
#18+
fraks Dimitry Sibiryakov пропущено... Ага, ты получишь ошибку если он уже был закрыт или даже никогда не имел result set-а. Не знаю как в энтих ваших фиредаках, а в фибах лишний .Сlose на TFIBQuery никогда ошибок не выдавал. Независимо от того, открыт он был или нет. Я не знаю, какие они там получают ошибки. У меня всё прекрасно работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2020, 09:32 |
|
||
|
Delphi Rio 10.3 FireDac MySQL Commands out of sync; you can't run this command now
|
|||
|---|---|---|---|
|
#18+
fraksв фибах лишний .Сlose на TFIBQuery никогда ошибок не выдавал. Они со своим неестественным интеллектом прогнулись под дерьмопримеры, который "везде". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2020, 12:34 |
|
||
|
Delphi Rio 10.3 FireDac MySQL Commands out of sync; you can't run this command now
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov fraksв фибах лишний .Сlose на TFIBQuery никогда ошибок не выдавал. Они со своим неестественным интеллектом прогнулись под дерьмопримеры, который "везде". Попробовал с компонентами FireDAC вот такую вещь: Код: pascal 1. 2. 3. И вообще никаких Close не надо. Видимо под капотом само всё происходит. И это радует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2020, 15:02 |
|
||
|
Delphi Rio 10.3 FireDac MySQL Commands out of sync; you can't run this command now
|
|||
|---|---|---|---|
|
#18+
Следующим логичным шагом будет повторное использование туалетной бумаги. Попробуйте. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2020, 15:59 |
|
||
|
Delphi Rio 10.3 FireDac MySQL Commands out of sync; you can't run this command now
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Следующим логичным шагом будет повторное использование туалетной бумаги. Попробуйте. Да, спасибо за совет. Обязательно попробую. Сейчас это актуально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2020, 18:24 |
|
||
|
Delphi Rio 10.3 FireDac MySQL Commands out of sync; you can't run this command now
|
|||
|---|---|---|---|
|
#18+
Евгений Стронг второй запуск вернет ошибку: "Commands out of sync; you can't run this command now". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2020, 11:22 |
|
||
|
Delphi Rio 10.3 FireDac MySQL Commands out of sync; you can't run this command now
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Следующим логичным шагом будет повторное использование туалетной бумаги. Попробуйте. В UIB, например, несколько Open подряд без Close - вообще штатная операция, когда надо выполнить несколько одинаковых запросов, с разными параметрами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2020, 12:31 |
|
||
|
Delphi Rio 10.3 FireDac MySQL Commands out of sync; you can't run this command now
|
|||
|---|---|---|---|
|
#18+
alekcvp Dimitry Sibiryakov Следующим логичным шагом будет повторное использование туалетной бумаги. Попробуйте. В UIB, например, несколько Open подряд без Close - вообще штатная операция, когда надо выполнить несколько одинаковых запросов, с разными параметрами. Да он какой-то обиженный. Не понятно, по какой причине прицепился к CLose и Open. Совершенно нормально и ПРАВИЛЬНО делать Close перед манипуляциями с компонентом доступа. Это рекомендация самих разработчиков. А в FireDac сделали вообще прикольно и синтаксического сахара подкинули. Теперь можно в одной строке сразу запустить запрос с параметрами, просто открыв запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2020, 12:39 |
|
||
|
Delphi Rio 10.3 FireDac MySQL Commands out of sync; you can't run this command now
|
|||
|---|---|---|---|
|
#18+
Евгений СтронгСовершенно нормально и ПРАВИЛЬНО делать Close перед манипуляциями с компонентом доступа. Это рекомендация самих разработчиков. А можно ссылку на эту рекомендацию? Так делают когда датасет привязан к гриду и прочей дб-авари. Но это явно не твой случай. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2020, 12:59 |
|
||
|
Delphi Rio 10.3 FireDac MySQL Commands out of sync; you can't run this command now
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Евгений СтронгСовершенно нормально и ПРАВИЛЬНО делать Close перед манипуляциями с компонентом доступа. Это рекомендация самих разработчиков. А можно ссылку на эту рекомендацию? Так делают когда датасет привязан к гриду и прочей дб-авари. Но это явно не твой случай. Да это вообще был пример. Я пробовал по-разному. Хотел избежать ошибки. Как решать проблему, с помощью компонентов, так и не понятно. Я уже давно всё переписал на прямой доступ без хранимой и забил на это. Как показывает практика - это и проще. Хранимки оправданы при крупных корпоративных решениях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2020, 13:13 |
|
||
|
Delphi Rio 10.3 FireDac MySQL Commands out of sync; you can't run this command now
|
|||
|---|---|---|---|
|
#18+
Евгений СтронгЯ пробовал по-разному. Хотел избежать ошибки. Как решать проблему, с помощью компонентов, так и не понятно. Открыть документацию по MySQL API чтобы выяснить когда такая ошибка может возникать не предлагать? Тогда остаётся только одно: перестать-таки повторно использовать компоненты, а для выполнения запросов использовать специальный метод TFDConneciton. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2020, 13:16 |
|
||
|
Delphi Rio 10.3 FireDac MySQL Commands out of sync; you can't run this command now
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Евгений СтронгЯ пробовал по-разному. Хотел избежать ошибки. Как решать проблему, с помощью компонентов, так и не понятно. Открыть документацию по MySQL API чтобы выяснить когда такая ошибка может возникать не предлагать? Тогда остаётся только одно: перестать-таки повторно использовать компоненты, а для выполнения запросов использовать специальный метод TFDConneciton. Читал документацию о том, что проблема возникает по причине того, что сервак не может отдать несколько запросов в рамках одного подключения. И там есть специальный метод IP, который сбрасывает коннект. А на стороне клиента получается надо будет передергивать коннект. Решение мягко скажем не хорошее. Тут постоянный идет выбор между MSSQL и MySQL. У меня по крайней мере. MSSQL нравится, но VPS дороговато выходит по сравнению с Linux. Поэтому и приходится использовать MySQL, но тут свои "грабли". В общем оптимальным получилось делать всё с помощью запросов из клиента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2020, 13:28 |
|
||
|
Delphi Rio 10.3 FireDac MySQL Commands out of sync; you can't run this command now
|
|||
|---|---|---|---|
|
#18+
Евгений Стронг Совершенно нормально и ПРАВИЛЬНО делать Close перед манипуляциями с компонентом доступа. Это рекомендация самих разработчиков. Евгений Стронг И там есть специальный метод IP, который сбрасывает коннект. Установите в свойствах подключения ResultMode: Store ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2020, 13:47 |
|
||
|
Delphi Rio 10.3 FireDac MySQL Commands out of sync; you can't run this command now
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ Установите в свойствах подключения ResultMode: Store ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2020, 13:53 |
|
||
|
Delphi Rio 10.3 FireDac MySQL Commands out of sync; you can't run this command now
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ Евгений Стронг Совершенно нормально и ПРАВИЛЬНО делать Close перед манипуляциями с компонентом доступа. Это рекомендация самих разработчиков. Евгений Стронг И там есть специальный метод IP, который сбрасывает коннект. Установите в свойствах подключения ResultMode: Store Спасибо. На будущее буду знать. Но постараюсь обходить хранимки стороной) По крайней мере на MySQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2020, 13:53 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39953278&tid=2038274]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
149ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 253ms |
| total: | 499ms |

| 0 / 0 |
