에 이 쿼리에 ERROR
<TAB>용 테이블 스토리지 엔진LE > 에는 이 옵션이 없습니다.
<TAB>용 테이블 스토리지 엔진LE > 에는 이 옵션이 없습니다.
이것은 의 MySQL에 의해 반환된 에러입니다.order by쿼리. 열 유형은 다음과 같습니다.varchar(2000).
쿼리:
select * from `dbo.table_1` order by textT;
반환된 오류:
ERROR 1031 (HY000):dbo.table_1'의 테이블 스토리지 엔진에는 이 옵션이 없습니다.
왜 이런 일이 일어날까요?어떻게 고칠 수 있을까요?
이 문제는 MyISAM으로 작성되었지만 나중에 InnoDB로 전환된 테이블 정의를 Import할 때 발생합니다.ROW_FORMAT옵션이 유효하지 않은 것 같습니다.
내보낸 데이터베이스를 가져오려고 할 때 이 문제가 발생할 경우 검색 및 교체만 하면 됩니다.ROW_FORMAT=FIXED아무것도 없이.
저는 다음을 사용하여 매우 빠르게 작업을 수행했습니다.
sed -ie 's/ROW_FORMAT=FIXED//g' backup.sql
문제 해결!문제가 된 것은 ROW_FORMAT이라고 지적해 주신 jbrahy 덕분입니다.
편집: @seven의 제안에 따라 더 많은 플랫폼에서 작동하도록 업데이트됨
EDIT2: 또한 @Steen-Sütt에 따르면 이것이 더 안전한 수정일 수 있습니다.
sed -ie 's/ROW_FORMAT=FIXED/ROW_FORMAT=COMPACT/g' backup.sql
ROW_FORMAT=DYNAMIC이 포함된 InnoDB의 테이블 정의를 가져올 때 동일한 오류가 발생합니다.MyISAM 엔진으로 테이블을 만들었는데 나중에 InnoDB로 바꿨습니다.create table 스테이트먼트에서 ROW_FORMAT=DYNAMIC을 삭제하고 테이블을 다시 작성하면 정상적으로 동작합니다.당신의 문제에 대한 저의 해결책은 이것입니다.
show create table `dbo.table_1`;
그런 다음 해당 명령어의 출력을 가져와 ROW_FORMAT=DYNAMIC을 제거한 다음 테이블 이름을 로 변경합니다.dbo.table_1_old
rename table `dbo.table_1` to `dbo.table_1_old`;
그런 다음 첫 번째 단계부터 create table 문을 실행합니다.
-- don't use this create as there are missing columns use yours
create table `dbo.table_1` (textT VARCHAR(255));
그런 다음 테이블을 이전 데이터로 다시 채웁니다.
insert into `dbo.table_1` select * from `dbo.table_1_old`;
그러면 원래 SQL을 실행할 수 있습니다.
select * from `dbo.table_1` order by textT;
다음의 조작도 실행할 수 있습니다.
ALTER TABLE `dbo.table_1` ROW_FORMAT = DEFAULT ;
이 문제는 MySQL 5.6 이전 버전에서 만든 MySQL 5.7로 테이블 정의를 가져올 때 발생하는 것으로 보입니다.같은 오류로 인해 옵션 KEY_BUFFER_SIZE=8192에 의해 b가 생성될 수 있으며 INNODB ENGINE에 대해 바이트 단위로 정의된 유사한 크기가 생성됩니다.sql-dump에서 base를 Import할 때 이 오류가 발생했습니다.결정: sed - ie s/KEY_BLOCK_SIZE=16384//g' my-file-sql_sql.sql
이 문제가 발생하여 백업 파일이 암호화되었습니다..zsql그래서 my.cnf를 수정했습니다.innodb_strict_mode = off잘 작동했다.
언급URL : https://stackoverflow.com/questions/29486583/table-storage-engine-for-table-doesnt-have-this-option-on-order-by-query-err
'programing' 카테고리의 다른 글
| 판다 '카운트(distinct)' 상당)' (0) | 2022.10.21 |
|---|---|
| jQuery를 사용하여 HTML 문자열 이스케이프 (0) | 2022.10.21 |
| Java 컴파일 클래스에는 달러 기호가 포함되어 있습니다. (0) | 2022.10.21 |
| MySQL 트리거가 다른 TIMEZONE을 사용함 (0) | 2022.10.21 |
| Unary Plus/Number(x)와 parse Float(x)의 차이점은 무엇입니까? (0) | 2022.10.21 |