Código de erro MySQL: 1175 durante a actualização na bancada de trabalho MySQL
UPDATE tablename SET columnname=1;
dá-me o seguinte erro:
Eu segui as instruções e descarreguei as instruções.está a usar o modo de actualização segura e tentou actualizar uma tabela sem um onde usa uma coluna de chaves para desactivar o modo seguro, activa ou desactiva a opção ....
safe update
Opção do menu Edit
Depois Preferences
depois SQL Editor
. O mesmo erro ainda aparece e eu não sou capaz de atualizar este valor. Por favor, diz-me o que se passa?
15 answers
Parece que a sua sessão MySql tem a opção de actualizações seguras definida. Isso significa que você não pode atualizar ou excluir registros sem especificar uma chave (ex. ([1]}) na cláusula "where".
Tenta:
SET SQL_SAFE_UPDATES = 0;
Ou pode modificar a sua consulta para seguir a regra (use primary key
em where clause
).
Siga os seguintes passos antes de executar o comando de actualização: Na Bancada De Trabalho De MySQL
- vá para
Edit
-->Preferences
- Carregue em
"SQL Editor"
tab euncheck
"actualizações seguras"check box
-
Query
-->Reconnect to Server
// logout e depois login - Agora execute a sua consulta SQL
P. S., não é necessário reiniciar o servidor de MySQL!
SET SQL_SAFE_UPDATES=0;
UPDATE tablename SET columnname=1;
SET SQL_SAFE_UPDATES=1;
Tudo o que é necessário é: iniciar uma nova consulta e executar:
SET SQL_SAFE_UPDATES = 0;
Então, execute a consulta que você estava tentando executar que não estava funcionando anteriormente.
Não há necessidade de definir o SQL_SAFE_ updates para 0 , eu realmente o desencorajaria de fazê-lo dessa forma. Basta adicionar na cláusula onde um valor-chave que corresponda a tudo como uma chave primária comparando com 0, por isso em vez de escrever:
UPDATE customers SET countryCode = 'USA'
WHERE country = 'USA'; -- which gives the error, you just write:
UPDATE customers SET countryCode = 'USA'
WHERE (country = 'USA' AND customerNumber <> 0); -- Because customerNumber is a primary key you got no error 1175 any more.
Agora pode ter a certeza que todos os registos são actualizados como espera.
SET SQL_SAFE_UPDATES=0;
Ou
Ir para Edit --> Preferences
Carregue SQL Queries
página e desligar Safe Updates
box
Query --> Reconnect to Server
Agora execute a sua pesquisa SQL
Se você está em modo seguro, você precisa fornecer id em onde cláusula. Então algo assim deve funcionar!
UPDATE tablename SET columnname=1 where id>0
UPDATE schemaname.tablename SET columnname=1;
Obrigado a todos.
Na versão 6.2 do MySQL Workbech, não saia das opções de preferência {[[0]}.
Neste caso é possível usar:SET SQL_SAFE_UPDATES=0;
Código De Erro: 1175. Está a usar o modo de actualização seguro e tentou actualizar uma tabela sem um onde que use uma coluna de chaves para desactivar o modo seguro, comuta a opção nas preferências -> Editor SQL e liga-se de novo.
Desligar temporariamente o" modo de actualização Seguro"
SET SQL_SAFE_UPDATES = 0;
UPDATE options SET title= 'kiemvieclam24h' WHERE url = 'http://kiemvieclam24h.net';
SET SQL_SAFE_UPDATES = 1;
Desligar o "modo de actualização seguro" para sempre
MySQL workbench 8.0:
MySQL Workbench => [ Edit ] => [ Preferences ] -> [ SQL Editor ] -> Uncheck "Safe Updates"
MySQL Workbench => [Edit] => [Preferences] => [SQL Queries]
A solução mais simples é definir o limite da linha e executar. Isto é feito para fins de segurança.
Tentei ser um bom cidadão e modifiquei a consulta para usar uma tabela temporária de ids que seria atualizada:
create temporary table ids ( id int )
select id from prime_table where condition = true;
update prime_table set field1 = '' where id in (select id from ids);
Falha. Modificou a actualização para:
update prime_table set field 1 = '' where id <> 0 and id in (select id from ids);
Funcionou. Bem, se estou sempre a adicionar onde a tecla 0 para contornar a verificação de actualização Segura, ou mesmo definir SQL_SAFE_ update=0, então perdi o 'check' a minha pergunta. Mais vale desligar a opção permanentemente. Suponho que faz apagar e atualizar um processo de duas etapas em vez de uma.. mas se você digitar rápido o suficiente e parar de pensar sobre a chave ser especial, mas ao invés de apenas um incômodo..
update tablename set column1 = '' where tablename .id = (select id from tablename2 where tablename2.column2 = 'xyz');
Isto é para o Mac, mas deve ser o mesmo para os outros SO, excepto a localização das preferências.
O erro que temos quando tentamos uma operação inseguraDELETE
Na nova janela, desligue a opção Safe updates
Então feche e reabra a ligação. Não há necessidade de reiniciar o serviço.
Agora vamos tentar novamente com sucesso. resultado. Então, o que se passa com estas actualizações seguras? Não é uma coisa má. Isto é o que MySql diz sobre isso.Usar a opção --safe-updates
Para iniciantes, uma opção de arranque útil é
--safe-updates
(ou--i-am-a-dummy
, que tem o mesmo efeito. É útil para os casos em que você pode ter emitido uma declaraçãoDELETE FROM tbl_name
, mas esqueci-me da cláusulaWHERE
. Normalmente, tal declaração apaga tudo filas da mesa. Com--safe-updates
, você pode apagar as linhas apenas por especificar os valores-chave que os identificam. Isto ajuda a prevenir acidente.Quando utiliza a opção
--safe-updates
, o mysql emite o seguinte declaração quando se liga ao servidor de MySQL:
SET sql_safe_updates=1, sql_select_limit=1000, sql_max_join_size=1000000;
é seguro ligar esta opção enquanto você lida com o banco de dados de produção. Caso contrário, você deve ter muito cuidado para não apagar acidentalmente dados importantes.