복붙노트

[SQL] 사실, 그렇지 않은 경우 MySQL의 1050 오류 "테이블이 이미 존재합니다"

SQL

사실, 그렇지 않은 경우 MySQL의 1050 오류 "테이블이 이미 존재합니다"

나는이 테이블을 추가 해요 :

CREATE TABLE contenttype (
        contenttypeid INT UNSIGNED NOT NULL AUTO_INCREMENT,
        class VARBINARY(50) NOT NULL,
        packageid INT UNSIGNED NOT NULL,
        canplace ENUM('0','1') NOT NULL DEFAULT '0',
        cansearch ENUM('0','1') NOT NULL DEFAULT '0',
        cantag ENUM('0','1') DEFAULT '0',
        canattach ENUM('0','1') DEFAULT '0',
        isaggregator ENUM('0', '1') NOT NULL DEFAULT '0',
        PRIMARY KEY (contenttypeid),
        UNIQUE KEY packageclass (packageid, class)
);

그리고 나는 1050 "테이블이 이미 존재하는"수

그러나 테이블이 존재하지 않습니다. 어떤 아이디어?

편집 : 자세한 내용은 모든 사람들이 저를 믿지 않는 것 때문에 :)

DESCRIBE contenttype

수율 :

CREATE TABLE gunzfact_vbforumdb.contenttype(
contenttypeid INT UNSIGNED NOT NULL AUTO_INCREMENT ,
class VARBINARY( 50 ) NOT NULL ,
packageid INT UNSIGNED NOT NULL ,
canplace ENUM( '0', '1' ) NOT NULL DEFAULT '0',
cansearch ENUM( '0', '1' ) NOT NULL DEFAULT '0',
cantag ENUM( '0', '1' ) DEFAULT '0',
canattach ENUM( '0', '1' ) DEFAULT '0',
isaggregator ENUM( '0', '1' ) NOT NULL DEFAULT '0',
PRIMARY KEY ( contenttypeid ) ,

수익률 :

해결법

  1. ==============================

    1.당신 같은 소리는 Schroedinger의 테이블이 ...

    당신 같은 소리는 Schroedinger의 테이블이 ...

    진심으로 지금, 당신은 아마 깨진 테이블을 가지고있다. 시험:

  2. ==============================

    2.MySQL의 로그에서 :

    MySQL의 로그에서 :

    InnoDB: You can drop the orphaned table inside InnoDB by
    InnoDB: creating an InnoDB table with the same name in another
    InnoDB: database and copying the .frm file to the current database.
    InnoDB: Then MySQL thinks the table exists, and DROP TABLE will
    InnoDB: succeed.
    
  3. ==============================

    3.나는이 같은 오류를 얻고, (NullUserException의 대답 @에서) 수리 표 도움이되지 않았다.

    나는이 같은 오류를 얻고, (NullUserException의 대답 @에서) 수리 표 도움이되지 않았다.

    나는 결국이 솔루션을 발견 :

    sudo mysqladmin flush-tables
    

    나를 위해, sudo는하지 않고, 나는 다음과 같은 오류가 발생했습니다 :

    mysqladmin: refresh failed; error: 'Access denied; you need the RELOAD privilege for this operation'
    

    (OS X 10.6에서 실행)

  4. ==============================

    4.당신은 테이블 캐시를 플러시해야 할 수도 있습니다. 예를 들면 :

    당신은 테이블 캐시를 플러시해야 할 수도 있습니다. 예를 들면 :

    DROP TABLE IF EXISTS `tablename` ;
    FLUSH TABLES `tablename` ; /* or exclude `tablename` to flush all tables */
    CREATE TABLE `tablename` ...
    
  5. ==============================

    5.나는이 모든 일에 싸움 봤는데 : 나는 그들에 ... EXISTS 먼저 DROP IF를 수행하여 테이블 세트를 작성하는 Perl 스크립트가 다음을 CREATEing. 드롭은 성공했지만에 만들어이 오류 메시지를 받았습니다 : 테이블이 이미 존재

    나는이 모든 일에 싸움 봤는데 : 나는 그들에 ... EXISTS 먼저 DROP IF를 수행하여 테이블 세트를 작성하는 Perl 스크립트가 다음을 CREATEing. 드롭은 성공했지만에 만들어이 오류 메시지를 받았습니다 : 테이블이 이미 존재

    내가 마지막으로 그것의 바닥에 도착 : 내가 사용하는 것이 MySQL을 새 버전 이노의 기본 엔진이있다 ( "쇼 엔진 \ G를;") 나는의 MyISAM에 기본으로 my.cnf 파일에 변경, 재 MySQL을 시작, 지금은 더 이상 오류 "테이블이 이미 존재하는"수 없습니다.

  6. ==============================

    6.같은 문제가 발생한이 결국 나를 위해 일한 것입니다 (InnoDB의 테이블을 생성) :

    같은 문제가 발생한이 결국 나를 위해 일한 것입니다 (InnoDB의 테이블을 생성) :

    DROP DATABASE `having_issues`;
    

    내가 파일을 기준으로 점검, 수리 및 FLUSH하지만 아무것도 시도 권한은했다.

    이 옵션 인 경우 그래서, 이전 드롭 다른 데이터베이스로 모든 작업 테이블을 이동 (수동 작업에있는 드롭하기 전에 데이터베이스 폴더에서 모든 파일을 제거해야 할 수도 있습니다) 새 이름을 변경, 당신은 할 '해야' 당신의 방법에 백업 할 수 있습니다. 분명히, 어떤 InnoDB하지만 원본 데이터베이스와 함께 삭제하여 '캐시'가져옵니다.

  7. ==============================

    7.나는 MySQL의 12.3은 SQL 마에스트로에서 Win7에에이 문제를 가지고 있었다. 엄청난 사실 쇼 스토퍼를 자극. 아무것도도 삭제하고 데이터베이스를 다시하지 도왔다. 나는 XP에서이 같은 설정을 가지고 있으며 그래서 그것을 관련 Win7에 권한이 있어야합니다 것을 깨달았다 권한에 대한 답을 읽은 후,이 작동합니다. 내가 관리자로 MySQL을 실행 및 SQL 마에스트로가 정상적으로 실행 된 경우에도 그래서, 오류가 사라졌다. 그래서 Win7에와 MySQL 사이에 권한 문제가되어 있어야합니다.

    나는 MySQL의 12.3은 SQL 마에스트로에서 Win7에에이 문제를 가지고 있었다. 엄청난 사실 쇼 스토퍼를 자극. 아무것도도 삭제하고 데이터베이스를 다시하지 도왔다. 나는 XP에서이 같은 설정을 가지고 있으며 그래서 그것을 관련 Win7에 권한이 있어야합니다 것을 깨달았다 권한에 대한 답을 읽은 후,이 작동합니다. 내가 관리자로 MySQL을 실행 및 SQL 마에스트로가 정상적으로 실행 된 경우에도 그래서, 오류가 사라졌다. 그래서 Win7에와 MySQL 사이에 권한 문제가되어 있어야합니다.

  8. ==============================

    8.또한 테이블을 만들려고 이미 존재하고 떨어 뜨리 테이블이 존재하지 않은 것을 특징으로이 문제가 발생했습니다.

    또한 테이블을 만들려고 이미 존재하고 떨어 뜨리 테이블이 존재하지 않은 것을 특징으로이 문제가 발생했습니다.

    나는 "FLUSH 테이블을"했고,이 문제를 클리어.

  9. ==============================

    9.뷰를 생성하는 동안 같은 문제가 나와 함께 발생했습니다. 뷰는 그것 때문에 제거있어 약간의 변화로 이전 한 후 존재하지만 다시 추가하려고 할 때 그것은 나를 오류 메시지 "보기가 이미 존재"표시했다.

    뷰를 생성하는 동안 같은 문제가 나와 함께 발생했습니다. 뷰는 그것 때문에 제거있어 약간의 변화로 이전 한 후 존재하지만 다시 추가하려고 할 때 그것은 나를 오류 메시지 "보기가 이미 존재"표시했다.

    해결책:

    수동으로 하나의 일을 할 수 있습니다.

    그것은 성공적으로 테이블을 생성합니다.

  10. ==============================

    10.먼저 체크 당신은 바로 데이터베이스 사용 yourDB에 있고 단지 무엇을보고 정말 존재하는 경우에 컨텐트 유형에서 선택 *를하려고하면 ...

    먼저 체크 당신은 바로 데이터베이스 사용 yourDB에 있고 단지 무엇을보고 정말 존재하는 경우에 컨텐트 유형에서 선택 *를하려고하면 ...

  11. ==============================

    11.나는 맥 OS X와 ​​MySQL 5.1.40에서 같은 문제가 있었다. 내가 편집 내 SQL 스크립트에 이클립스를 사용하고 난 MySQL 워크 벤치 5.2.28을 시도보다. 아마 그것은 맥 형식으로 개행 문자를 변환. 나는 파일의 첫 번째 행을 주석까지 내 스크립트 뭐가 잘못에 대해 아무 생각이 없었다. 이 후이 스크립트는 하나의 주석으로 mysql을 해석했다. 나는이 문제를 해결하려면 텍스트 편집기 맥 응용 프로그램에서 빌드를 사용하는. 행 구분이 올바른 형식으로 변환 후, 오류 (1050)는 없어.

    나는 맥 OS X와 ​​MySQL 5.1.40에서 같은 문제가 있었다. 내가 편집 내 SQL 스크립트에 이클립스를 사용하고 난 MySQL 워크 벤치 5.2.28을 시도보다. 아마 그것은 맥 형식으로 개행 문자를 변환. 나는 파일의 첫 번째 행을 주석까지 내 스크립트 뭐가 잘못에 대해 아무 생각이 없었다. 이 후이 스크립트는 하나의 주석으로 mysql을 해석했다. 나는이 문제를 해결하려면 텍스트 편집기 맥 응용 프로그램에서 빌드를 사용하는. 행 구분이 올바른 형식으로 변환 후, 오류 (1050)는 없어.

    이클립스 사용자를위한 업데이트 :

    전체 작업 공간, 만들어진 새 파일을 종료 기본값을 설정하려면 :

    편집 및 현재 편집 된 파일을 기존 파일을 열고 파일을 변환하려면 메뉴로 이동 :

  12. ==============================

    12.나는이 같은 경우가 있었다. 문제는 상위 디렉토리에있는 권한을했다.

    나는이 같은 경우가 있었다. 문제는 상위 디렉토리에있는 권한을했다.

    나는에서와 MySQL에서 테스트하는 동안 파일을 복사했다.

    drwx------   3 _mysql  wheel 
    

    충분히 할 필요가 없습니다 :

    -rw-rw----   3 _mysql  wheel 
    

    죄송합니다 부활합니다.

  13. ==============================

    13.나는 오류 1050 (150)에 큰 문제가되었다.

    나는 오류 1050 (150)에 큰 문제가되었다.

    문제는, 나를 위해 내가 조건의 하나로서 ON DELETE SET NULL의와 제약 조건을 추가하려고 한 것이 었습니다.

    ON으로 변경은 NO ACTION 내게 필요한 FK 제약 조건을 추가 할 수 삭제합니다.

    불행하게도 MySQL의 오류 메시지가 나는 반복적으로 위의 질문에 대한 답변의 도움으로이 솔루션을 찾아야했다, 그래서 전혀 도움이되지 수 있습니다.

  14. ==============================

    14.저도 같은 문제로 고민하고 있습니다. 나는 그것이 존재하지 않는 경우에도, 테이블을 만들 수 없습니다. 나는 어떤 성공 위의 모든 솔루션을 시도했다.

    저도 같은 문제로 고민하고 있습니다. 나는 그것이 존재하지 않는 경우에도, 테이블을 만들 수 없습니다. 나는 어떤 성공 위의 모든 솔루션을 시도했다.

    내 솔루션은 파일을 삭제했다 ib_logfil0, ib_logfile1라는,을 ibdata1,와 MySQL의 데이터 폴더에서 auto.cnf; 이러한 파일을 삭제하기 전에 먼저 MySQL의 서비스를 중지해야합니다.

    그런 다음 서비스를 다시 시작한 후, 내 저장된 작성 (A sqldump 파일)을 모두했다 MySQL은 이러한 파일을 다시 나는 백업 스크립트를 실행 할 수 있었다.

  15. ==============================

    15.나는이 같은 문제가 없었다 및 데이터베이스 이름은 대소 문자를 구분했다 것 같습니다. 내 데이터베이스가 호출된다 :

    나는이 같은 문제가 없었다 및 데이터베이스 이름은 대소 문자를 구분했다 것 같습니다. 내 데이터베이스가 호출된다 :

    Mydatabase
    

    내 스크립트가 포함 동안

    USE mydatabase
    

    내가 올바른 경우에 데이터베이스 이름을 변경하면 모든 일에 보였다. MAC OSX에서 MySQL 워크 벤치를 사용하여

  16. ==============================

    16.는 '보기'(가상 테이블) 우리의 새 테이블 이름과 동일한 이름으로 데이터베이스에 존재하는 경우에도이 문제가 발생합니다.

    는 '보기'(가상 테이블) 우리의 새 테이블 이름과 동일한 이름으로 데이터베이스에 존재하는 경우에도이 문제가 발생합니다.

  17. ==============================

    17.내 경우에는 내가이 이노에 문제가 될 것으로; 나는 실제 문제가 무엇인지 발견되지 있지만의 MyISAM 빌드에 허용되는 경우 생성 결코

    내 경우에는 내가이 이노에 문제가 될 것으로; 나는 실제 문제가 무엇인지 발견되지 있지만의 MyISAM 빌드에 허용되는 경우 생성 결코

  18. ==============================

    18.대신 mysqldump를의 MySQL 데이터베이스 디렉토리의 파일 시스템 복사본을 사용할 때 나에게 문제가 발생했다. 나는 매우 큰 테이블, 대부분의 MyISAM 몇 이노 캐시 테이블을 가지고 있고이 데이터를 mysqldump에 실용적 없습니다. 우리는 여전히의 MyISAM을 실행하고 있기 때문에, XtraBackup를 선택할 수 없습니다.

    대신 mysqldump를의 MySQL 데이터베이스 디렉토리의 파일 시스템 복사본을 사용할 때 나에게 문제가 발생했다. 나는 매우 큰 테이블, 대부분의 MyISAM 몇 이노 캐시 테이블을 가지고 있고이 데이터를 mysqldump에 실용적 없습니다. 우리는 여전히의 MyISAM을 실행하고 있기 때문에, XtraBackup를 선택할 수 없습니다.

    같은 증상은 위와 같이 나에게 일어났다. 테이블은 테이블에 관계하는 디렉토리에 파일이 없으면,이 없다, 그러나 MySQL은 자사가 생각하기 때문에 그것을 만들 수 없습니다. 드롭 테이블은, 그것은 거기 말한다 테이블은 말한다 만듭니다.

    문제는이 시스템에서 발생, 모두 백업을 복사하여 수정되었습니다. 그러나 나는 이러한 파일은 InnoDB에 사용되지 않는다는 인상에도 불구하고 .MYD와 .MYI 파일이 있었다는 것을 내 백업에 그났습니다. .FRM이 MySQL을 소유 한 반면, .MYD와 .MYI 파일은 루트의 소유자가 있었다.

    백업에서 복사 할 경우, 파일 권한을 확인하십시오. 플러시 테이블은 작동 할 수 있습니다,하지만 난 종료하고 데이터베이스를 다시 시작 선택했다.

    행운을 빕니다.

  19. ==============================

    19.MySQL의 시스템은 많은 데이터베이스가 있고 테이블 쿼리 자신을 복사 각각에 따라서 활성 DB didnt 한 도움에서만 작업 테이블 떨어 뜨릴 작성, 나는 테이블을 삭제했다 맙소사, 내가 알아 낸까지 osCommerce에와 같은 문제가 스크립트를 설치했다 모든 DBS에서

    MySQL의 시스템은 많은 데이터베이스가 있고 테이블 쿼리 자신을 복사 각각에 따라서 활성 DB didnt 한 도움에서만 작업 테이블 떨어 뜨릴 작성, 나는 테이블을 삭제했다 맙소사, 내가 알아 낸까지 osCommerce에와 같은 문제가 스크립트를 설치했다 모든 DBS에서

  20. ==============================

    20.CREATE 문 내 것은 준비 ENV 덤프의 일부였다.

    CREATE 문 내 것은 준비 ENV 덤프의 일부였다.

    나는 위에서 언급 된 모든 것을 시도했다. 나는 해결책을하지 않았다. 그러나 구속에 내 길이었다 :

    해결 방법 : 내가 사용 된 덤프는 MySQL의 다른 버전되었을 수 있습니다. 나는 MySQL의 워크 벤치 (내 컴퓨터에 설치) 지방을 사용하여 준비 MYSQL에 연결할 수있는 권한을 얻었다. 나는 MySQL의 워크 벤치를 준비에 로그인에 스테이징 서버에 RDP하지 않았다. 거기에서 덤프를 만들었습니다. 덤프를 실행하고 달콤한처럼 일했다.

  21. ==============================

    21.백업 SQL 파일을 가져 오기 위해 노력했지만 오류가 발생했습니다; 1050 "테이블이 이미 존재합니다"

    백업 SQL 파일을 가져 오기 위해 노력했지만 오류가 발생했습니다; 1050 "테이블이 이미 존재합니다"

    내 설치했다 :

    해결책:

  22. ==============================

    22.디스크도는 전체 수 있습니다. (그냥 있었다)

    디스크도는 전체 수 있습니다. (그냥 있었다)

  23. ==============================

    23.내가 가져 오기를 계속 할 수 있도록 뷰를 삭제했다, 그래서 내 경우에는 문제는, 내 테이블과 같은 이름을 가진 뷰가 있다고했다.

    내가 가져 오기를 계속 할 수 있도록 뷰를 삭제했다, 그래서 내 경우에는 문제는, 내 테이블과 같은 이름을 가진 뷰가 있다고했다.

    drop view `my-view-that-has-same-name-as-table`;
    

    나를 위해 일한 자동화 솔루션은 존재할 수있는 전망을 드롭 덤프 동안 나오지이 함께 정상적인 드롭 테이블을 대체하는 것입니다 :

    mysqldump my-db \
    | sed -E 's/^DROP TABLE IF EXISTS(.+)$/\0 DROP VIEW IF EXISTS\1/g' \
    | mysql my-other-db
    

    또는 당신은 오히려 백업 파일로 인쇄 할 경우

    mysqldump my-db \
    | sed -E 's/^DROP TABLE IF EXISTS(.+)$/\0 DROP VIEW IF EXISTS\1/g' \
    > my-db.dump.sql
    

    당신이 덤프 파일을받은 경우 또는 당신은 당신의 DB로 가져

    cat my-db.dump.sql \
    | sed -E 's/^DROP TABLE IF EXISTS(.+)$/\0 DROP VIEW IF EXISTS\1/g' \
    | mysql my-other-db
    

    당신은 아이디어를 얻을

    참고 : DROP TABLE IF는 터치 싶지 않아 덤프의 명령 존재의 다른 유형이 있기 때문에 당신은 대체 정규식의 시작 부분에 ^를 추가하는 것이 중요하다.

    당신이 뭔가를 가지고에서 이동 :

    --
    -- Table structure for table `my_table`
    --
    
    DROP TABLE IF EXISTS `my_table`;
    /*!40101 SET @saved_cs_client     = @@character_set_client */;
    /*!40101 SET character_set_client = utf8 */;
    CREATE TABLE `my_table` (
    ...
    

    이런 일을 가진 사람 :

    --
    -- Table structure for table `my_table`
    --
    
    DROP TABLE IF EXISTS `my_table`; DROP VIEW IF EXISTS `my_table`;
    /*!40101 SET @saved_cs_client     = @@character_set_client */;
    /*!40101 SET character_set_client = utf8 */;
    CREATE TABLE `my_table` (
    ...
    
  24. ==============================

    24.당신은 날 믿어 이뤄져! I've 그냥 내 .SQL 파일에서 주석 블록을 제거하고 지금은 작동합니다.

    당신은 날 믿어 이뤄져! I've 그냥 내 .SQL 파일에서 주석 블록을 제거하고 지금은 작동합니다.

    CREATE DATABASE  IF NOT EXISTS `issga` /*!40100 DEFAULT CHARACTER SET utf8 */;
    USE `issga`;
    --
    -- Table structure for table `protocolo`
    --
    
    DROP TABLE IF EXISTS protocolo;
    /*!40101 SET @saved_cs_client     = @@character_set_client */;
    /*!40101 SET character_set_client = utf8 */;
     CREATE TABLE protocolo (
      `idProtocolo` int(11) NOT NULL AUTO_INCREMENT,
      `tipo` varchar(30) DEFAULT NULL,
      `estado` int(2) DEFAULT 0,
      PRIMARY KEY (`idProtocolo`)
     ) ENGINE=InnoDB AUTO_INCREMENT=142 DEFAULT CHARSET=utf8;
     /*!40101 SET character_set_client = @saved_cs_client */;
    
    --
    -- Dumping data for table `protocolo`
    --
    
    LOCK TABLES protocolo WRITE;
    /*!40000 ALTER TABLE protocolo DISABLE KEYS */;
    /* INSERT INTO `protocolo` VALUES () */
    /*!40000 ALTER TABLE protocolo ENABLE KEYS */;
    UNLOCK TABLES;
    

    삭제 된 주석 블록이이었다 :

    --
    -- Table structure for table `protocolo`
    -- 
    

    I've 같은 .SQL 파일 만 문제가있는 테이블을 떠났다. I've 댓글을 제거 그 후, 유일한 코드 왼쪽되었고, 오류가 사라집니다.

  25. ==============================

    25.난 그냥 같은 오류 했어하지만 난 테이블이 이미 존재 알고 그것을 추가하고 싶었다. 동일한 오류하지만 약간 다른 시나리오를 찾을 때이 질문은 구글에 나를 위해 1 번으로 온다 나는 내 대답을 추가 해요. 기본적으로 나는 틱 필요

    난 그냥 같은 오류 했어하지만 난 테이블이 이미 존재 알고 그것을 추가하고 싶었다. 동일한 오류하지만 약간 다른 시나리오를 찾을 때이 질문은 구글에 나를 위해 1 번으로 온다 나는 내 대답을 추가 해요. 기본적으로 나는 틱 필요

    "DROP TABLE / VIEW / 절차 / 기능 / 이벤트 / TRIGGER 문을 추가"

    그리고 이것은 나를 위해 오류를 해결했다.

  26. from https://stackoverflow.com/questions/3302476/mysql-1050-error-table-already-exists-when-in-fact-it-does-not by cc-by-sa and MIT license