Programing

MySQL 오류 코드 : MySQL Workbench에서 업데이트 중 1175

lottogame 2020. 9. 30. 08:35
반응형

MySQL 오류 코드 : MySQL Workbench에서 업데이트 중 1175


visited값 1을 제공 하도록 열을 업데이트하려고 합니다. MySQL 워크 벤치를 사용하고 워크 벤치 내부에서 SQL 편집기에 문을 작성하고 있습니다. 다음 명령을 작성하고 있습니다.

UPDATE tablename SET columnname=1;

다음과 같은 오류가 발생합니다.

안전 업데이트 모드를 사용 중이고 KEY 열을 사용하는 WHERE없이 테이블을 업데이트하려고했습니다. 안전 모드를 비활성화하려면 ... 옵션을 전환하십시오.

지침에 safe update따라 Edit메뉴 에서 옵션을 선택 취소 Preferences다음 SQL Editor. 동일한 오류가 계속 나타나고이 값을 업데이트 할 수 없습니다. 뭐가 잘못 됐는지 말해주세요.


MySql 세션에 safe-updates 옵션이 설정되어있는 것 같습니다. primary key, where 절에 키 (예 :)를 지정하지 않으면 레코드를 업데이트하거나 삭제할 수 없습니다 .

시험:

SET SQL_SAFE_UPDATES = 0;

아니면 규칙 (사용 따르지 쿼리 수정할 수 primary key있는을 where clause).


UPDATE 명령을 실행하기 전에 다음 단계를 따르십시오 . MySQL Workbench에서

  1. Edit->로 이동Preferences
  2. "SQL Editor"탭을 클릭 하고 uncheck"안전한 업데이트"check box
  3. Query-> Reconnect to Server// 로그 아웃 후 로그인
  4. 이제 SQL 쿼리를 실행하십시오.

추신, MySQL 데몬을 다시 시작할 필요가 없습니다!


SET SQL_SAFE_UPDATES=0;
UPDATE tablename SET columnname=1;
SET SQL_SAFE_UPDATES=1;

필요한 것은 다음과 같습니다. 새 쿼리를 시작하고 다음을 실행합니다.

SET SQL_SAFE_UPDATES = 0;

그런 다음 : 이전에 작동하지 않았던 실행하려고했던 쿼리를 실행합니다.


SQL_SAFE_UPDATES를 0으로 설정할 필요가 없습니다 . 그렇게하지 않는 것이 좋습니다. REASON에 대해 SAFE_UPDATES는 기본적으로 설정되어 있습니다. 내가 의미하는 바를 알고 있다면 안전 벨트 및 기타 물건없이 자동차를 운전할 수 있습니다.) 0과 비교하여 기본 키와 같은 모든 항목과 일치하는 KEY 값을 WHERE 절에 추가하면됩니다.

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.

이제 모든 레코드가 예상대로 (항상) 업데이트된다는 것을 확신 할 수 있습니다.


오류 코드 : 1175. 안전 업데이트 모드를 사용 중이며 KEY 열을 사용하는 WHERE없이 테이블을 업데이트하려고했습니다. 안전 모드를 비활성화하려면 기본 설정-> SQL 편집기에서 옵션을 토글하고 다시 연결하십시오.

임시 "안전 업데이트 모드"끄기

SET SQL_SAFE_UPDATES = 0;
UPDATE options SET title= 'kiemvieclam24h' WHERE url = 'http://kiemvieclam24h.net';
SET SQL_SAFE_UPDATES = 1;

"안전 업데이트 모드"를 영구적으로 해제

MySQL 워크 벤치 8.0 :

MySQL Workbench => [ Edit ] => [ Preferences ] -> [ SQL Editor ] -> Uncheck "Safe Updates"

여기에 이미지 설명 입력 이전 버전은 다음을 수행 할 수 있습니다.

MySQL Workbench => [Edit] => [Preferences] => [SQL Queries]

  1. 환경 설정 ...
  2. "안전한 업데이트"...
  3. 서버 다시 시작

환경 설정 ...

안전한 업데이트 서버 다시 시작


SET SQL_SAFE_UPDATES=0;

또는

이동 Edit --> Preferences

SQL Queries탭을 클릭 하고 확인란을 선택 취소 Safe Updates 하십시오.

Query --> Reconnect to Server

이제 SQL 쿼리를 실행하십시오.


안전 모드에있는 경우 where 절에 ID를 제공해야합니다. 따라서 이와 같은 것이 작동합니다!

UPDATE tablename SET columnname=1 where id>0

답을 찾았습니다. 문제는 테이블 이름 앞에 스키마 이름을 붙여야한다는 것입니다. 즉, 명령은 다음과 같아야합니다.

UPDATE schemaname.tablename SET columnname=1;

모두 감사합니다.


MySQL Workbech 버전 6.2에서는 기본 설정 SQLQueries옵션을 종료하지 않습니다 .

이 경우 가능한 사용 : SET SQL_SAFE_UPDATES=0;


WorkBench에서 안전 업데이트 모드를 비활성화하여 문제를 해결했습니다.

-Edit-> Preferences-> Sql Editor를 누른 다음 Safe update를 선택 취소합니다.


SET SQL_SAFE_UPDATES = 0;

여기에 코드 SQL

SET SQL_SAFE_UPDATES = 1;

가장 간단한 해결책은 행 제한을 정의하고 실행하는 것입니다. 이것은 안전을 목적으로합니다.


질문에 대한 답변이 있고 안전한 업데이트와 관련이 없기 때문에 잘못된 장소 일 수 있습니다. 정보를 추가하기 위해 게시하겠습니다.

나는 좋은 시민이 되려고 노력하고 업데이트 될 임시 ID 테이블을 사용하도록 쿼리를 수정했습니다.

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

실패. 업데이트를 다음으로 수정했습니다.

update prime_table set field 1 = '' where id <> 0 and id in (select id from ids);

작동했습니다. 글쎄요-안전 업데이트 확인을 위해 항상 키 <> 0을 추가하거나 SQL_SAFE_UPDATE = 0을 설정하면 쿼리에서 '확인'을 잃어버린 것입니다. 옵션을 영구적으로 끄는 것이 좋습니다. 1 단계가 아닌 2 단계 프로세스를 삭제하고 업데이트한다고 생각합니다.하지만 충분히 빠르게 입력하고 키가 특별하지 않고 귀찮은 것이라고 생각하지 않으면 ..


사실, 이것은 대부분의 예에서 의미가 없습니다. 그러나 마침내 다음 진술에 이르렀고 잘 작동합니다.

update tablename  set column1 = '' where tablename .id = (select id from tablename2 where tablename2.column2 = 'xyz');

이것은 Mac 용이지만 환경 설정의 위치를 ​​제외하고 다른 OS에서도 동일해야합니다.

안전하지 않은 DELETE작업을 시도 할 때 발생하는 오류

이 오류가 발생하면 기본 설정을 클릭하십시오.

On the new window, uncheck the option Safe updates

안전한 업데이트 선택 취소

Then close and reopen the connection. No need to restart the service.

Now we are going to try the DELETE again with successful results.

여기에 이미지 설명 입력

So what is all about this safe updates? It is not an evil thing. This is what MySql says about it.

Using the --safe-updates Option

For beginners, a useful startup option is --safe-updates (or --i-am-a-dummy, which has the same effect). It is helpful for cases when you might have issued a DELETE FROM tbl_name statement but forgotten the WHERE clause. Normally, such a statement deletes all rows from the table. With --safe-updates, you can delete rows only by specifying the key values that identify them. This helps prevent accidents.

When you use the --safe-updates option, mysql issues the following statement when it connects to the MySQL server:

SET sql_safe_updates=1, sql_select_limit=1000, sql_max_join_size=1000000;

프로덕션 데이터베이스를 처리하는 동안이 옵션을 설정하는 것이 안전합니다. 그렇지 않으면 중요한 데이터를 실수로 삭제하지 않도록 매우주의해야합니다.

참고 URL : https://stackoverflow.com/questions/11448068/mysql-error-code-1175-during-update-in-mysql-workbench

반응형

'Programing' 카테고리의 다른 글

목록  (0) 2020.09.30
ViewPager에서 조각이 표시되는시기를 확인하는 방법  (0) 2020.09.30
__proto__ VS.  (0) 2020.09.30
Ruby의 여러 줄 주석?  (0) 2020.09.30
jQuery는 select onChange의 값을 얻습니다.  (0) 2020.09.30