programing

CREATE TABLE의 1064 오류...TYPE=MYISAM

padding 2023. 11. 4. 10:18
반응형

CREATE TABLE의 1064 오류...TYPE=MYISAM

다음은 제 오류입니다(더 필요한 정보가 있으시면 문의하십시오) - 오류 SQL 쿼리:

CREATE TABLE dave_bannedwords(

id INT( 11 ) NOT NULL AUTO_INCREMENT ,
word VARCHAR( 60 ) NOT NULL DEFAULT  '',
PRIMARY KEY ( id ) ,
KEY id( id )
) TYPE = MYISAM ;

MySQL:

1064 - SQL 구문에 오류가 있습니다. MySQL 서버 버전에 해당하는 설명서에서 'TYPE=My' 근처에서 사용할 수 있는 올바른 구문을 확인하십시오.ISAM' 6호선

구문 아래에 문서화된 바와 같습니다.

메모
형들이TYPE옵션은 다음과 동의어였습니다.ENGINE.TYPE는 MySQL 4.0에서 더 이상 사용되지 않고 MySQL 5.5에서 제거되었습니다.MySQL 5.5 이상으로 업그레이드할 때는 의존하는 기존 애플리케이션을 대신 사용하도록 변환해야 합니다.

따라서 원하는 것은 다음과 같습니다.

CREATE TABLE dave_bannedwords(
  id   INT(11)     NOT NULL AUTO_INCREMENT,
  word VARCHAR(60) NOT NULL DEFAULT '',
  PRIMARY KEY (id),
  KEY id(id) -- this is superfluous in the presence of your PK, ergo unnecessary
) ENGINE = MyISAM ;

에 대한 보완 노트CREATE TABLE .. TYPE=""SQL 덤프 파일의 구문

TLDR: 만약 당신이 아직도CREATE TABLE ... TYPE="..."타사 도구에 의해 생성된 SQL 덤프 파일의 문은 서버가 기본값을 사용하도록 구성되었음을 가장 확실하게 나타냅니다.sqlmodeMYSQL40아니면MYSQL323.

긴이야기

다른 사람들이 말했듯이,TYPE의론.CREATE TABLE는 MySQL에서 오랫동안 사용되지 않았습니다.mysqldump정확하게 사용합니다.ENGINE인수(예: 이전 버전과의 호환성이 있는 덤프를 생성하도록 특별히 요청하지 않는 한)--compatible=mysql40의 버전으로mysqldump최대 5.7).

그러나 많은 외부 SQL 덤프 도구(예: phpmyadmin, Navicat 및 DBVisualizer와 같은 MySQL 클라이언트에 통합된 도구 및 iControl과 같은 외부 자동 백업 서비스에서 사용되는 도구)WP)는 이러한 변화에 대해 구체적으로 인지하지 못하고 대신 다음 사항에 의존합니다.SHOW CREATE TABLE ...명령어를 사용하여 각 테이블에 대한 테이블 작성 문을 제공합니다(단, 이는 실제로 좋은 것입니다).하지만, 그SHOW CREATE TABLE실제로 구식 구문을 만들어 낼 것입니다.TYPE논쟁, 만일.sqlmode변수가 다음으로 설정됩니다.MYSQL40아니면MYSQL323.

그러므로, 만약 당신이 여전히CREATE TABLE ... TYPE="..."타사 도구에 의해 생성된 SQL 덤프 파일의 문은 서버가 기본값을 사용하도록 구성되었음을 가장 확실하게 나타냅니다.sqlmodeMYSQL40아니면MYSQL323.

이것들sqlmodes는 기본적으로 이전 버전과 호환되는 동작을 유지하도록 MySQL을 구성하며, 기본적으로 이 동작을 사용하는 것이 몇 년 전에 주로 권장되었습니다.그러나 이러한 모드가 없으면 제대로 작동하지 않는 코드가 있을 가능성은 매우 낮습니다.어쨌든,MYSQL40,MYSQL323그 밖에 몇 가지 유사한 것들이sqlmodes 자체는 더 이상 사용되지 않으며 MySQL 8.0 이상에서는 지원되지 않습니다.

서버가 여전히 다음과 같이 구성되어 있는 경우sqlmodes와 당신은 만약 당신이 이것들을 바꾸면 어떤 레거시 프로그램이 실패할지도 모른다는 걱정을 합니다, 그러면 한가지 가능성은 설정하는 것입니다.sqlmode해당 프로그램에 대해 로컬로 실행합니다.SET SESSION sql_mode = 'MYSQL40';연결 직후에이는 임시 패치로만 간주해야 하며 MySQL 8.0 이상에서는 작동하지 않습니다.

SQL 쿼리를 다시 쓰는 것과 관련되지 않는 미래에 대비되는 솔루션은 프로그램별(앞에서 설명한 바와 같이)로 활성화해야 하는 호환성 기능을 정확하게 결정하고 해당 기능만 활성화하는 것입니다.기본값sqlmode(즉, 서버의 구성에서) 이상적으로 (현재 버전의 공식 MySQL 기본값을 사용하는) 설정되지 않은 상태로 두어야 합니다.의 전체 목록sqlmode(MySQL 5.7 기준)이 여기에 설명되어 있습니다: https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html .

CREATE TABLE `admnih` (
  `id` int(255) NOT NULL auto_increment,
  `asim` varchar(255) NOT NULL default '',
  `brid` varchar(255) NOT NULL default '',
  `rwtbah` int(1) NOT NULL default '0',
  `esmmwkeh` varchar(255) NOT NULL default '',
  `mrwr` varchar(255) NOT NULL default '',
  `tid` int(255) NOT NULL default '0',
  `alksmfialdlil` int(255) NOT NULL default '0',
  `tariktsjil` varchar(255) NOT NULL default '',
  `aimwke` varchar(255) NOT NULL default '',
  `twkie` text NOT NULL,
  `rwtbahkasah` int(255) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=2 ;
SELECT Email, COUNT(*)
FROM user_log    
WHILE Email IS NOT NULL    
GROUP BY Email    
HAVING COUNT(*) > 1    
ORDER BY UpdateDate DESC 

MySQL:설명서 #1064 - SQL 구문에 오류가 있습니다. MySQL 서버 버전에 해당하는 설명서에서 'TYPE=My' 근처에서 사용할 수 있는 올바른 구문을 확인하십시오.ISAM' 36호선


아래의 수정 사항:

CREATE TABLE users_online (
  ip varchar(15) NOT NULL default '',
  time int(11) default NULL,
  PRIMARY KEY  (ip),
  UNIQUE KEY id (ip),
  KEY id_2 (ip)
  TYPE=MyISAM;
)
#                           
# Data untuk tabel `users_online`
#

INSERT INTO users_online VALUES ('127.0.0.1', 1158666872);

아래 쿼리를 시도해 보십시오.

CREATE TABLE card_types (
  card_type_id int(11) NOT NULL auto_increment,
  name varchar(50) NOT NULL default '',
  PRIMARY KEY  (card_type_id),
) ENGINE = MyISAM ;

언급URL : https://stackoverflow.com/questions/12428755/1064-error-in-create-table-type-myisam

반응형