Código de erro MySQL: 1175 durante a actualização na bancada de trabalho MySQL

Estou a tentar actualizar a coluna para lhe dar o valor 1. Eu uso o MySQL workbench, e estou escrevendo a declaração no editor SQL de dentro da bancada de trabalho. Estou a escrever o seguinte comando:

UPDATE tablename SET columnname=1;

dá-me o seguinte erro:

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 ....

Eu segui as instruções e descarreguei as instruções. 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?

Author: Leigh, 2012-07-12

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).

 1142
Author: Habibillah, 2015-03-25 19:10:51

Siga os seguintes passos antes de executar o comando de actualização: Na Bancada De Trabalho De MySQL

  1. vá para Edit --> Preferences
  2. Carregue em "SQL Editor" tab e uncheck "actualizações seguras" check box
  3. Query --> Reconnect to Server // logout e depois login
  4. Agora execute a sua consulta SQL

P. S., não é necessário reiniciar o servidor de MySQL!

 351
Author: Ripon Al Wasim, 2018-04-05 09:49:51
SET SQL_SAFE_UPDATES=0;
UPDATE tablename SET columnname=1;
SET SQL_SAFE_UPDATES=1;
 109
Author: user2531028, 2015-03-05 06:27:14

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.
 94
Author: Quagmire12, 2016-12-08 06:37:46

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.
 43
Author: Rudy De Volder, 2015-02-04 08:23:26
  1. Preferências...
  2. "Actualizações Seguras"...
  3. reiniciar o servidor

Preferences...

Safe Updates Restart server

 38
Author: andrew, 2016-02-19 17:37:45
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

 33
Author: Balu, 2014-02-04 11:16:38

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
 23
Author: Tomislav, 2015-09-11 09:32:40
Encontrei a resposta. O problema era que eu tenho que preceder o nome da tabela com o nome schema. i. e., O comando deve ser:
UPDATE schemaname.tablename SET columnname=1;
Obrigado a todos.
 20
Author: Jury A, 2013-07-25 05:49:02

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;
 13
Author: ferdiado, 2014-09-10 19:55:49

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"

enter image description here A versão antiga pode:

MySQL Workbench => [Edit] => [Preferences] => [SQL Queries]
 10
Author: TinhNQ, 2018-07-31 09:35:18

A solução mais simples é definir o limite da linha e executar. Isto é feito para fins de segurança.

 8
Author: Ruwantha, 2015-10-30 08:55:34
Uma vez que a pergunta foi respondida e não teve nada a ver com atualizações seguras, este pode ser o lugar errado; vou postar apenas para adicionar informações.

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..
 3
Author: Gerard ONeill, 2015-04-20 15:04:35
É verdade, isto é inútil para a maioria dos exemplos. Mas finalmente, cheguei à seguinte declaração e ela funciona bem:
update tablename  set column1 = '' where tablename .id = (select id from tablename2 where tablename2.column2 = 'xyz');
 3
Author: Sonic-Mayhem, 2015-10-10 11:20:59

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

Click on preferences when you get this error

Na nova janela, desligue a opção Safe updates

Uncheck the 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.

enter image description here

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ção DELETE FROM tbl_name, mas esqueci-me da cláusula WHERE. 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.

 0
Author: Krishnadas PC, 2018-07-05 07:22:01