2012-04-03 2 views
1

테이블 이름의 MySQL v5.5.14에 밑줄 테이블을 만들 수 없습니다 내가 실행하려고하면내가의 MySQL v5.5.14을 사용하고

ERROR 1005 (HY000): Can't create table 'LONGBOW_products.universal_partname' (errno: -1) 
:

mysql> CREATE TABLE IF NOT EXISTS LONGBOW_products.universal_partname (
    -> part_id SMALLINT(5) UNSIGNED NOT NULL DEFAULT 0, 
    -> PRIMARY KEY (part_id) 
    ->); 

를 그것은 나에게 오류를 반환 나는 테이블 이름에서 밑줄을 제거하려고 할 때

그러나, 그것은 사실 반환

사용할 수없는 경우 궁금
mysql> CREATE TABLE IF NOT EXISTS LONGBOW_products.universal (
    -> part_id SMALLINT(5) UNSIGNED NOT NULL DEFAULT 0, 
    -> PRIMARY KEY (`part_id`) 
    ->); 
Query OK, 0 rows affected (0.00 sec) 

은을 강조 yyMySQL의 최신 버전에서 테이블 이름에?

+2

다른 테이블이 이전에 삭제 및 다시 작성된 경우 외래 키를 통해이 테이블을 참조합니까? 그게 실수 1005의 원인입니다. 밑줄은 괜찮습니다 ... –

+1

전체적으로 많은 양의 MySQL은 모르지만 인터넷 검색으로 찾았습니다. 이 링크에서 제안 된 해결책이 정확한 원인을 파악하는 데 도움이되는지 확인하십시오. http://verysimple.com/2006/10/22/mysql-error-number-1005-cant-create-table-mydbsql-328_45frm-errno-150/ – Prashanth

+0

안녕하세요 @Michael, 알 수있는 쉬운 방법이 있습니까? 이것에 대한 다른 표는 무엇입니까? –

답변

0

데이터베이스 및 테이블 이름에는 “/”, “\”, “.”, 또는 파일 이름에 허용되지 않는 문자를 사용할 수 없습니다.

은 참조 : http://dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html

제거 "를." 테이블 이름에서

+3

'LONGBOW_products' 섹션이 데이터베이스 이름이라고 생각합니다. – staticsan

+0

예, 데이터베이스 이름입니다. –

+0

LONGBOW_products_universal_partname –

2

이 문제가 해결되었는지 확실하지 않습니다. 아주 간단한 CREATE 문과 비슷한 문제가 있습니다 : Error Code : 1005. 'UCQ.country'(errno : -1) 테이블을 생성 할 수 없습니다.

에 따르면 http://dev.mysql.com/doc/refman/5.5/en/innodb-error-codes.html "오류 메시지가 오류 -1을 나타내면 테이블에 내부 InnoDB 테이블의 이름과 일치하는 열 이름이 포함되어있어 테이블 생성이 실패했을 수 있습니다." 21,107 18시 23분 19초 이노 : : 오류 파일을 만드는이 './ucq/country.ibd'나는 mysql_error_log.err에서 보았을 때

그러나 나는 내 문제를 해결했다. 121107 18:23:19 InnoDB : 파일 조작시 운영 체제 오류 번호 17. InnoDB : 오류 번호 17은 '파일 존재'를 의미합니다. InnoDB : 일부 운영 체제 오류 번호는 에 있습니다. InnoDB : http://dev.mysql.com/doc/refman/5.5/en/operating-system-error-codes.html InnoDB : 파일이 이미 존재하지만 해당 테이블이 없습니다. InnoDB : InnoDB 데이터 사전에 존재합니다. InnoDB를 옮겼습니까? InnoDB : SQL 명령을 사용하지 않고 .ibd 파일을 닫습니다. InnoDB : DISABLED TABLESPACE 및 IMPORT TABLESPACE InnoDB : CREATE TABLE의 중간에 mysqld 충돌이 발생 했습니까? InnoDB : './ucq/country.ibd'파일을 제거하여 문제를 해결하십시오. InnoDB : MySQL의 'datadir'아래.

그래서 country.ibd가 삭제되었으며 CREATE 문이 원활하게 실행되었습니다.