The error is due to the INTO clause in the second SELECT statement. That wouldn’t be an error if the SELECT returned no more than one row.
But if that SELECT returns more than one row, MySQL will throw 1172 error. (You can test this by adding a «LIMIT 1
» clause on that «SELECT ... INTO
» statement, and verifying that the error is not thrown.
The procedure runs a SELECT to return a resultset, then issues an UPDATE statement to modify zero or more rows in a table.
The next part of the procedure is confusing; it’s not clear what we are trying to achieve. The SELECT can return zero, one or more rows. If the intent is to perform a conditional test to determine whether there are any rows with item_total > 0
,
Then one possible «fix» (to avoid the 1172 error) would be to add
AND o.item_total > 0 LIMIT 1
to the «SELECT ... INTO
» statement.
Without an «ORDER BY
«, it’s indeterminate which row would be returned. But it doesn’t really look like it matters. Apart from the comparison of the returned o.item_total
value, it doesn’t look like the procedure is doing anything else with the columns returned.
The following UPDATE
statement is only going to be executed if an item_total>0
row was found.
And the UPDATE statement will update all rows that have an order_number greater than a specified constant.
There doesn’t appear to be any relationship to the row(s) returned by the previous SELECT ... INTO
statement.
If the intent is to update the rows in order_status (that are related to a customer) if «any» row returned by the previous query has an item_total > 0
, then the proposed «fix» would accomplish that.
The procedure then (conditionally) returns a second resultset (all rows from order_status with `order_stts = ‘waiting’), but only if there wasn’t any order_status row with and item_total>0.
We can fix the 1172 error, but this procedure has much bigger problems than that error. The whole procedure seems like bizarre approach to solving whatever problem it’s supposed to be solving. It just looks like a jumble of SQL statements kludged together without a clear design.
I’m getting this error from MySQL when running a query inside a stored procedure:
Error Code: 1172
Result consisted of more than one row
I understand the error: I’m doing a SELECT (...) INTO (var list)
, and thus the query is required to return a single row. When I use LIMIT 1
or SELECT DISTINCT
, the error goes away.
However: when I run the original query manually (without LIMIT
or DISTINCT
), it does return a single row. So I’m suspecting I may have bumped into a MySQL bug. Does anyone know what could be happening?
EDIT
I’m posting the SQL as requested. Everything that starts with an underscore is a variable declared earlier inside the procedure. When I test it, I’m replacing _cd_pai_vc
with the ID for the record that is causing the problem.
SELECT a.valor, IFNULL(p.valor, 0), fn_cd2alias(ra.cd_registro), fn_cd2alias(IFNULL(p.valor,0))
INTO _valor, _cd_pai_vc, _alias_verbete, _alias_pai
FROM dados_registros ra
INNER JOIN dados_varchar255 a
ON a.cd_registro = ra.cd_registro
AND a.fl_excluido = 0
AND a.alias = 'vc-verbetes-termo'
LEFT OUTER JOIN dados_registros rp
INNER JOIN dados_int p
ON p.cd_registro = rp.cd_registro
AND p.fl_excluido = 0
AND p.alias = 'vc-remissoes-termo referenciado'
INNER JOIN dados_int pt
ON pt.cd_registro = rp.cd_registro
AND pt.fl_excluido = 0
AND pt.alias = 'vc-remissoes-tipo remissao'
AND fn_cd2alias(pt.valor) = 'hierarquica'
ON ra.cd_registro = rp.cd_entidade
AND rp.fl_excluido = 0
AND fn_cd2alias(rp.cd_modulo) = 'vc-remissoes'
WHERE ra.cd_registro = _cd_pai_vc
AND ra.fl_excluido = 0;
Доброго времени суток, скидываю на ваш суд функцию:
DROP PROCEDURE IF EXISTS `set_auth3`;
DELIMITER $$
CREATE PROCEDURE `set_auth3` (IN usr_ip VARCHAR(15), IN auth_properties VARCHAR(255))
BEGIN
DECLARE usr_id INT;
DECLARE uid_ip VARCHAR(15);
SELECT uid INTO usr_id FROM ip_pool WHERE INET_ATON(usr_ip) = ip LIMIT 1;
SELECT ip INTO uid_ip FROM mac_uid WHERE ip = INET_ATON(usr_ip);
IF( usr_id > 0 AND uid_ip = INET_ATON(usr_ip) ) THEN
INSERT INTO auth_now SET
ip = usr_ip,
properties = auth_properties,
start = UNIX_TIMESTAMP(),
last = UNIX_TIMESTAMP()
ON DUPLICATE KEY UPDATE
properties = IF(auth_properties!=»,auth_properties,properties),
last = UNIX_TIMESTAMP();
UPDATE ip_pool SET `release` = UNIX_TIMESTAMP() + 90
WHERE ip = INET_ATON(usr_ip)
AND type = ‘dynamic’
AND `release` < (UNIX_TIMESTAMP() + 65)
LIMIT 1;
END IF;
END$$
DELIMITER ;
Проблема заключается в том что если
SELECT ip INTO uid_ip FROM mac_uid WHERE ip = INET_ATON(usr_ip);
возвращает пустое значение, видим ошибку:
ERROR 1172 (42000): Result consisted of more than one row
Помогите исправить
Номер ошибки: | Ошибка 1172 | |
Название ошибки: | .NET Error 1172 | |
Описание ошибки: | Ошибка 1172: Возникла ошибка в приложении .NET Framework. Приложение будет закрыто. Приносим извинения за неудобства. | |
Разработчик: | Microsoft Corporation | |
Программное обеспечение: | .NET Framework | |
Относится к: | Windows XP, Vista, 7, 8, 10, 11 |
Обзор «.NET Error 1172»
Обычно люди ссылаются на «.NET Error 1172» как на ошибку времени выполнения (ошибку). Разработчики программного обеспечения, такие как Microsoft Corporation, обычно принимают .NET Framework через несколько уровней отладки, чтобы сорвать эти ошибки перед выпуском для общественности. К сожалению, иногда ошибки, такие как ошибка 1172, могут быть пропущены во время этого процесса.
После первоначального выпуска пользователи .NET Framework могут столкнуться с сообщением «.NET Error 1172» во время запуска программы. Во время возникновения ошибки 1172 конечный пользователь может сообщить о проблеме в Microsoft Corporation. Затем Microsoft Corporation нужно будет исправить эти ошибки в главном исходном коде и предоставить модифицированную версию для загрузки. Поэтому, когда вы сталкиваетесь с запросом на обновление .NET Framework, это обычно связано с тем, что это решение для исправления ошибки 1172 и других ошибок.
Что вызывает ошибку времени выполнения 1172?
«.NET Error 1172» чаще всего может возникать при загрузке .NET Framework. Вот три наиболее заметные причины ошибки ошибки 1172 во время выполнения происходят:
Ошибка 1172 Crash — Номер ошибки вызовет блокировка системы компьютера, препятствуя использованию программы. Если данный ввод недействителен или не соответствует ожидаемому формату, .NET Framework (или OS) завершается неудачей.
Утечка памяти «.NET Error 1172» — ошибка 1172 утечка памяти приводит к тому, что .NET Framework постоянно использует все больше и больше памяти, увяская систему. Возможные провокации включают отсутствие девыделения памяти и ссылку на плохой код, такой как бесконечные циклы.
Error 1172 Logic Error — Ошибка программной логики возникает, когда, несмотря на точный ввод от пользователя, производится неверный вывод. Это происходит, когда исходный код Microsoft Corporation вызывает недостаток в обработке информации.
.NET Error 1172 проблемы часто являются результатом отсутствия, удаления или случайного перемещения файла из исходного места установки .NET Framework. Как правило, решить проблему позволяет получение новой копии файла Microsoft Corporation, которая не содержит вирусов. Помимо прочего, в качестве общей меры по профилактике и очистке мы рекомендуем использовать очиститель реестра для очистки любых недопустимых записей файлов, расширений файлов Microsoft Corporation или разделов реестра, что позволит предотвратить появление связанных с ними сообщений об ошибках.
Классические проблемы .NET Error 1172
Эти проблемы .NET Framework, связанные с .NET Error 1172, включают в себя:
- «Ошибка в приложении: .NET Error 1172»
- «Недопустимая программа Win32: .NET Error 1172»
- «Возникла ошибка в приложении .NET Error 1172. Приложение будет закрыто. Приносим извинения за неудобства.»
- «К сожалению, мы не можем найти .NET Error 1172. «
- «.NET Error 1172 не может быть найден. «
- «Проблема при запуске приложения: .NET Error 1172. «
- «Не удается запустить .NET Error 1172. «
- «.NET Error 1172 выйти. «
- «Ошибка пути программного обеспечения: .NET Error 1172. «
Проблемы .NET Error 1172 с участием .NET Frameworks возникают во время установки, при запуске или завершении работы программного обеспечения, связанного с .NET Error 1172, или во время процесса установки Windows. Выделение при возникновении ошибок .NET Error 1172 имеет первостепенное значение для поиска причины проблем .NET Framework и сообщения о них вMicrosoft Corporation за помощью.
Эпицентры .NET Error 1172 Головные боли
Эти проблемы .NET Error 1172 создаются отсутствующими или поврежденными файлами .NET Error 1172, недопустимыми записями реестра .NET Framework или вредоносным программным обеспечением.
В первую очередь, проблемы .NET Error 1172 создаются:
- Недопустимые разделы реестра .NET Error 1172/повреждены.
- Файл .NET Error 1172 поврежден от вирусной инфекции.
- .NET Error 1172 злонамеренно или ошибочно удален другим программным обеспечением (кроме .NET Framework).
- .NET Error 1172 конфликтует с другой программой (общим файлом).
- Поврежденная загрузка или неполная установка программного обеспечения .NET Framework.
Продукт Solvusoft
Загрузка
WinThruster 2022 — Проверьте свой компьютер на наличие ошибок.
Совместима с Windows 2000, XP, Vista, 7, 8, 10 и 11
Установить необязательные продукты — WinThruster (Solvusoft) | Лицензия | Политика защиты личных сведений | Условия | Удаление
Reported In
Reported In shows products that are verified to work for the solution described in this article. This solution might also apply to other similar products or applications.
Software
- TestStand
- VeriStand
Issue Details
I have already used the code I developed using Veristand 2017 and TestStand 2017, and recently I updated to VeriStand 2018. Now when I load VeriStand 2018 code from TestStand, I see the following error.
Details:
Error executing subset ‘StartVeristand’.
Error code: 1172; User-defined error code.
Solution
This error occurs because TestStand cannot load a compatible version of VeriStand when you have multiple versions of VeriStand installed. To solve this problem, you should install only one version of VeriStand and uninstall previous VeriStand versions.
Additional Information
The VeriStand Steps for TestStand is a set of custom TestStand step types initially developed by NI R&D used to automate VeriStand from a TestStand sequence. However, this tool has been deprecated and is no longer supported by NI. Its use is no longer recommended and it is provided strictly as is.
Moving forward, please use the ASAM XIL Steps for TestStand, which can be installed via NI Package Manager.
Я получаю эту ошибку от MySQL при выполнении запроса внутри хранимой процедуры:
Код ошибки: 1172 Результат состоял из более чем одной строки
Я понимаю ошибку: делаю SELECT (...) INTO (var list)
, поэтому запрос должен возвращать одну строку. Когда я использую LIMIT 1
or SELECT DISTINCT
, ошибка исчезнет.
Однако: когда я запускаю исходный запрос вручную (без LIMIT
or DISTINCT
), он возвращает одну строку. Так что я подозреваю, что, возможно, наткнулся на ошибку MySQL. Кто-нибудь знает, что может происходить?
РЕДАКТИРОВАТЬ
Я отправляю SQL по запросу. Все, что начинается с подчеркивания, — это переменная, объявленная ранее внутри процедуры. Когда тестирую, заменяю _cd_pai_vc
с идентификатором записи, вызывающей проблему.
SELECT a.valor, IFNULL(p.valor, 0), fn_cd2alias(ra.cd_registro), fn_cd2alias(IFNULL(p.valor,0))
INTO _valor, _cd_pai_vc, _alias_verbete, _alias_pai
FROM dados_registros ra
INNER JOIN dados_varchar255 a
ON a.cd_registro = ra.cd_registro
AND a.fl_excluido = 0
AND a.alias = 'vc-verbetes-termo'
LEFT OUTER JOIN dados_registros rp
INNER JOIN dados_int p
ON p.cd_registro = rp.cd_registro
AND p.fl_excluido = 0
AND p.alias = 'vc-remissoes-termo referenciado'
INNER JOIN dados_int pt
ON pt.cd_registro = rp.cd_registro
AND pt.fl_excluido = 0
AND pt.alias = 'vc-remissoes-tipo remissao'
AND fn_cd2alias(pt.valor) = 'hierarquica'
ON ra.cd_registro = rp.cd_entidade
AND rp.fl_excluido = 0
AND fn_cd2alias(rp.cd_modulo) = 'vc-remissoes'
WHERE ra.cd_registro = _cd_pai_vc
AND ra.fl_excluido = 0;