Estou tentando atualizar a coluna visited
para fornecer o valor 1. Uso o ambiente de trabalho MySQL e estou escrevendo a instrução no editor SQL de dentro do ambiente de trabalho. Estou escrevendo o seguinte comando:
UPDATE tablename SET columnname=1;
Dá-me o seguinte erro:
Você está usando o modo de atualização segura e tentou atualizar uma tabela sem WHERE que usa uma coluna KEY. Para desativar o modo de segurança, alterne a opção ....
Segui as instruções e desmarquei a safe update
opção no Edit
menu Preferences
então SQL Editor
. O mesmo erro ainda aparece e não consigo atualizar esse valor. Por favor, me diga o que está errado?
mysql
sql-update
mysql-workbench
Júri A
fonte
fonte
Respostas:
Parece que sua sessão do MySql possui a opção de atualizações seguras definida. Isso significa que você não pode atualizar ou excluir registros sem especificar uma chave (por exemplo
primary key
) na cláusula where.Tentar:
Ou você pode modificar sua consulta para seguir a regra (use
primary key
inwhere clause
).fonte
SET SQL_SAFE_UPDATES = 1
quando terminar, pois é um recurso de segurança que vale a pena.Siga as etapas a seguir antes de executar o comando UPDATE: No MySQL Workbench
Edit
->Preferences
"SQL Editor"
guia euncheck
"Atualizações seguras"check box
Query
->Reconnect to Server
// logout e, em seguida, faça loginps, Não há necessidade de reiniciar o daemon MySQL!
fonte
"Sql Editor"
, em vez de"Sql Queries"
e, em seguida, há uma caixa de seleção na parte inferior para"Safe Updates"
fonte
Não há necessidade de definir SQL_SAFE_UPDATES como 0 , eu realmente o desencorajaria a fazê-lo dessa maneira. SAFE_UPDATES está ativado por padrão por um RAZÃO. Você pode dirigir um carro sem cintos de segurança e outras coisas, se você entende o que quero dizer;) Basta adicionar na cláusula WHERE um valor KEY que corresponda a tudo, como uma chave primária em comparação com 0, portanto, em vez de escrever:
Agora você pode ter certeza de que todos os registros são (SEMPRE) atualizados conforme o esperado.
fonte
WHERE id > 0
como um truque nessa linha.Tudo o que é necessário é: Inicie uma nova consulta e execute:
Em seguida: Execute a consulta que você estava tentando executar que não estava funcionando anteriormente.
fonte
SET SQL_SAFE_UPDATES = 0;
seu código SQL aqui
SET SQL_SAFE_UPDATES = 1;
fonte
Código de erro: 1175. Você está usando o modo de atualização segura e tentou atualizar uma tabela sem um WHERE que usa uma coluna KEY Para desativar o modo de segurança, alterne a opção em Preferências -> Editor SQL e reconecte-se.
Desative temporariamente o "Modo de atualização segura"
Desative o "Modo de atualização segura" para sempre
Mysql workbench 8.0:
A versão antiga pode:
fonte
fonte
OU
Vamos para
Edit --> Preferences
Clique na
SQL Queries
guia e desmarque aSafe Updates
caixa de seleçãoQuery --> Reconnect to Server
Agora execute sua consulta sql
fonte
Se você estiver em um modo de segurança, precisará fornecer a ID na cláusula where. Então, algo assim deve funcionar!
fonte
No WorkBench, eu o resolvi desativando o modo de atualização segura:
-Editar -> Preferências -> Editor de Sql e desmarque Atualização segura.
fonte
Eu encontrei a resposta. O problema é que eu tenho que preceder o nome da tabela com o nome do esquema. ou seja, o comando deve ser:
Obrigado a todos.
fonte
qms-active-db
conjunto de marcadores .gh_table = '1660_207100000001000'No MySQL Workbech versão 6.2, não sai das
Nesse caso, é possível usar:SQLQueries
opções de Preferências .SET SQL_SAFE_UPDATES=0;
fonte
A solução mais simples é definir o limite de linhas e executar. Isso é feito para fins de segurança.
fonte
Como a pergunta foi respondida e não teve nada a ver com atualizações seguras, esse 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:
Fracasso. Modificou a atualização para:
Isso funcionou. Bem, caramba - se estou sempre adicionando a chave where <> 0 para contornar a verificação de atualização segura, ou até mesmo definir SQL_SAFE_UPDATE = 0, perdi a verificação na minha consulta. Eu também poderia simplesmente desativar a opção permanentemente. Suponho que isso exclua e atualize um processo de duas etapas em vez de um .. mas se você digitar rápido o suficiente e parar de pensar que a chave é especial, mas apenas um incômodo ..
fonte
É verdade que isso é inútil para a maioria dos exemplos. Mas, finalmente, cheguei à seguinte declaração e ela funciona bem:
fonte
Isso é para Mac, mas deve ser o mesmo para outros sistemas operacionais, exceto o local das preferências.
O erro que obtemos quando tentamos uma
DELETE
operação inseguraNa nova janela, desmarque a opção
Safe updates
Em seguida, feche e reabra a conexão. Não há necessidade de reiniciar o serviço.
Agora vamos tentar
DELETE
novamente com resultados bem-sucedidos.Então, o que há com essas atualizações seguras? Não é uma coisa má. É o que o MySql diz sobre isso.
Usando a
--safe-updates
opçãoÉ seguro ativar essa opção enquanto você lida com o banco de dados de produção. Caso contrário, você deve ter muito cuidado para não excluir acidentalmente dados importantes.
fonte