MySQL Workbench Edit Table Data는 읽기 전용입니다.


84

MySQL Workbench 5.2.37에서 테이블 데이터 편집을 시도 할 때 읽기 전용 모드입니다.

테이블에 기본 키가있는 경우에만 편집 할 수 있습니다.

기본 키가없는 테이블을 처리하는 수정 사항이 있습니까 ??

감사

제안 중 하나로 WB 5.2.40 업그레이드를 시도했습니다. 하지만 여전히이 문제는 존재합니다 .. 누구라도 도와 주시겠습니까?.


제안 된 질문이 작동하지 않습니다. 열을 추가 한 다음 제거 할 수 없습니다. 이제 phpMyadmin으로 이동하는 것이 제 선택입니다.
ophidion 2013-08-14

PK가 필요합니다. 여기 관련 FAQ가 있습니다.- dev.mysql.com
Philip Olson

웹 검색으로이 스레드를 찾은 사람들에게 관련이있을 수있는 MySQL Workbench 버그 : 보기의 결과 그리드는 편집 할 수 없습니다 . 이 버그는 " 업데이트 가능 "하고 직접적인 SQL 쿼리로 수정할 수있는 다른 모든 제약 조건을 충족 하는 에만 관련됩니다 .
TheDudeAbides dec.

답변:


77

테이블에 기본 키가 있다고 가정합니다. 먼저 잠금 해제 테이블 명령을 실행하여 문제가 해결되는지 확인하십시오.

다른 모든 방법이 실패하면 테이블을 변경하여 자동 증가 기능이있는 새 기본 키 열을 만들 수 있습니다. 완료되면 문제없이 열을 제거 할 수 있습니다.

항상 그렇듯이 테이블을 변경하기 전에 백업을 만들고 싶습니다. :)

참고 : MySQL 워크 벤치는 문제인 경우 기본 키없이 작동 할 수 없습니다. 그러나 다 대다 테이블이있는 경우 두 열을 모두 데이터를 편집 할 수있는 기본 키로 설정할 수 있습니다.


5
실제로 내 문제는 내 테이블에 기본 키를 갖고 싶지 않다는 것입니다. 이 질문에 대한 다른 답변을 참조하십시오.
EscalinNancy

2
프로그램은 편집하려는 행을 지정하기 위해 기본 키가 필요하기 때문에 MYSQL 워크 벤치에서 할 수 있다고 생각하지 않습니다.
Thomas B

Okie. 감사합니다 토마스. 내 테이블에 기본 키를 포함했습니다.
EscalinNancy

나는 DBeaver를 사용하고 있었고 같은 문제에 직면했습니다. 연결을 끊고 다시 연결하면 해결되었습니다!
lafleur

30

테이블에 기본 키가 없거나 고유하지 않은 nullable이 정의되지 않은 경우 MySql 워크 벤치는 데이터를 편집 할 수 없습니다.


나는 이것에 대한 해결책이 없다고 생각합니다.

14

DB 연결에 대한 기본 스키마를 설정하면 스키마를 명시 적으로 설정할 때까지 Select가 읽기 전용 모드로 실행됩니다.

USE mydb;
SELECT * FROM mytable

이것은 또한 편집 모드에서 실행됩니다.

SELECT * FROM mydb.mytable 

(MySql 5.2.42 / MacOsX)

이게 도움이 되길 바란다.


9

이것은 MySQLWorkbench 의 알려진 제한 사항 입니다 (PK없이 테이블을 편집 할 수 없음).

테이블을 편집하려면 :

방법 1 : (경우에 따라 방법이 작동하지 않음)
개체 브라우저에서 테이블을 마우스 오른쪽 버튼으로 클릭하고 거기에서 테이블 데이터 편집 옵션을 선택합니다.

방법 2 :
대신 기본 키를 추가하는 것이 좋습니다.

ALTER TABLE `your_table_name` ADD PRIMARY KEY (`column_name`);

먼저 기존 행을 제거 할 수 있습니다.

Truncate table your_table_name

1
최신 버전의 MySQL Workbench (내 6.3)에는 "테이블 데이터 편집"옵션이 없습니다.
JonP

6

mysql 워크 벤치의 "읽기 전용"아이콘 위로 마우스를 가져 가면 편집 할 수없는 이유를 설명하는 툴팁이 표시됩니다. 제 경우에는 기본 키 또는 고유하지 않은 nullable 열이있는 테이블 만 편집 할 수 있습니다.


이 아이콘은 어디에 있습니까?
Brad Kent

1
자신을 답변 : 그것은 아래와 워크 벤치 6.3에 결과의 오른쪽에 있어요
브래드 켄트

3

MySQL Workbench에서는 편집 할 INDEX가 필요하며 PK 일 필요는 없습니다 (PK 추가도 솔루션 임).

일반 INDEX 또는 복합 INDEX를 만들 수 있습니다. 이것이 바로 MySQL WB가 읽기 전용 문제를 수정하는 데 필요한 전부입니다 (MariaDB v. 10.1.4와 함께 v. 6.2가 있습니다).

표를 마우스 오른쪽 버튼으로 클릭하고 "표 변경 ..."을 선택한 다음 "색인"탭으로 이동하십시오. 왼쪽 창에 인덱스에 대한 사용자 지정 이름을 입력하고 중간 창에서 하나 (밸리가 고유한지 확인) 또는 더 많은 필드 (조합이 고유한지 확인)를 선택합니다.


3

기본 키를 선택할 때도 읽기 전용 문제가 발생했습니다. 결국 케이스 문제라는 것을 알게되었습니다. 분명히 PK 열은 테이블에 정의 된 것과 동일해야합니다. 사용 : Windows의 워크 벤치 6.3

읽기 전용

리드 ID, 이름, 성, 리드에서 만든 날짜 선택;

허용 된 편집

리드 ID, 이름, 성, 리드에서 만든 날짜 선택;


1

이 버그 에 따르면 문제는 일부 사용자의 경우 Workbench 5.2.38에서, 다른 사용자의 경우 5.2.39에서 수정되었습니다 . 최신 버전 (5.2.40)으로 업그레이드 할 수 있습니까?

또는 다음으로 해결할 수 있습니다.

SELECT *,'' FROM my_table

빠른 응답 감사합니다 .. 대체 SELECT가 작동하지 않습니다 ..하지만 업그레이드 할 수 있습니다 .. 업그레이드하고 확인하겠습니다 .. 감사합니다. eggyal ...
EscalinNancy

@EscalinNancy : 해당 버그 보고서의 다른 사람이 대체 해결 방법은 예를 들어 함수를 사용하는 것이라고 언급했습니다 SELECT *, CONCAT('','') FROM my_table. 아마도 그것은 당신에게 효과가 있습니까?
eggyal

아니요 .. 작동하지 않습니다 .. 결과 집합의 다른 열로 concat ( ''. '')을 받고 있지만 여전히 데이터는 읽기 전용입니다. 이제 WB 업그레이드 중
EscalinNancy

@EscalinNancy : 유감입니다 :( 여기에있는 다른 누군가가 문제가 무엇인지 더 잘 알고있을 수 있습니다.하지만 내 대답을 받아들이지 않으면이 질문을 볼 가능성이 더 높습니다.
eggyal

5.2.44에서도 마찬가지입니다. 데이터베이스는 생산적이며 이전 버전의 워크 벤치에서 잘 작동합니다.
Earth Engine

0

매니토바의 게시물에 따라 다른 해결책을 찾았습니다. 요약하면 솔루션은 다음과 같습니다.

  1. USE 명령 사용

    USE mydb;
    SELECT * FROM mytable
    
  2. 명시적인 스키마 접두사 사용 :

    SELECT * FROM mydb.mytable
    
  3. GUI

    개체 브라우저 "SCHEMAS"창에서 동일한 문제가있는 경우 모든 데이터베이스 아이콘이 처음에 강조 표시되지 않습니다. 따라서 기본값으로 사용하려는 데이터베이스 아이콘을 마우스 오른쪽 버튼으로 클릭하고 "기본 스키마로 설정"을 선택합니다.


0

1.) 기본 키를 고유하게 만들어야 편집 할 수 있습니다.

"파란색"스키마-> ALTER TABLE에서 테이블을 마우스 오른쪽 버튼으로 클릭하고 프라이머 키 (PK)를 찾은 다음 확인란을 선택합니다. UN, AI가 이미 선택되어 있어야합니다. 그 후에 적용하면 테이블 데이터를 편집 할 수 있습니다.

2.) 당신은 또한 당신의 선택 문에 프라이 머리 키를 포함해야합니다

Nr 1은 꼭 필요한 것은 아니지만 좋은 습관입니다.


0

쿼리에 JOIN이 있으면 Mysql Workbench는 결과가 모두 단일 테이블에서 나온 경우에도 테이블을 변경할 수 없습니다.

예를 들어 다음 쿼리는

SELECT u.* FROM users u JOIN passwords p ON u.id=p.user_id WHERE p.password IS NULL;

결과가 하나의 테이블로 제한되어 있어도 결과를 편집하거나 행을 추가 할 수 없습니다. 다음과 같이 구체적으로 수행해야합니다.

SELECT * FROM users WHERE id=1012;

그런 다음 행을 편집하고 테이블에 행을 추가 할 수 있습니다.


첫 번째 쿼리가 작동하지 않는 이유를 이해하지 못하지만 적어도 다음 쿼리가 작동합니다. 다음 쿼리를 편집 할 수 있습니다. SELECT u.* FROM users u WHERE u.id IN (SELECT user_id FROM passwords WHERE p.password IS NULL);
twk

0

여기에 이미지 설명 입력

표시된 체크를 선택 취소하면 그리드 편집이 활성화됩니다.


0

두 테이블을 조인하여 가져올 때 MySQL은 읽기 전용 모드로 실행되며 두 테이블의 열이 결과에 포함됩니다. 그러면 값을 직접 업데이트 할 수 없습니다.


0

예, MySQL도 결과 테이블을 편집 할 수 없음을 발견했습니다. 일반적으로 다른 테이블을 조인하는 결과 테이블에는 기본 키가 없습니다. 다른 테이블에 결과 테이블을 넣으라는 다른 제안을 들었지만 더 나은 해결책은 결과 테이블을 편집 할 수있는 Dbeaver를 사용하는 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.