2011-10-10 4 views
2

400 개가 넘는 테이블이있는 대용량 MySQL 데이터베이스가 있습니다. 거의 모든 테이블을 프레임 워크 요구 사항에 따라 InnoDB로 변경해야합니다. w 적절한 "표를 ALTER"는/나는 모든 테이블의 목록이있는 플랫 파일을 만들었습니다MySQL 테이블 엔진이 업데이트되지 않음 (또는 업데이트가 반영되지 않음)

SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES where TABLE_SCHEMA = 'DATABASE_NAME'; 

:

나는 다음과 같은 쿼리를 실행하고있어 DB를 현재 테이블 엔진을 볼 수 구문 :

ALTER TABLE wishlist_item ENGINE=InnoDB; 
...etc... 

나는 다음 구문/w이 파일을 실행했습니다 그러나

mysql -u USERNAME -pPASSWORD DATABASE_NAME < alter_staging_tables.txt 

을 때 실행 :

SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES where TABLE_SCHEMA = 'DATABASE_NAME'; 

내 파일이 실행 중이고 엔진 유형이 변경되었지만 여전히 모든 테이블이 MyISAM으로 표시됩니다. 내가도에 갔어요, 한 손으로 변경 실행 :

mysql> ALTER TABLE zendesk ENGINE=InnoDB; 
Query OK, 8 rows affected, 1 warning (0.00 sec) 
Records: 8 Duplicates: 0 Warnings: 0 

을하지만 선택을 수행 할 때

| zendesk           | MyISAM | 

는 아직도의 MyISAM으로 테이블을 보여줍니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? TIA.

업데이트 : MySQL 버젼 :

mysql -v 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 306675 
Server version: 5.0.77-log Source distribution 

업데이트 : 그래서 변화가 부착되지 않습니다 :

mysql> ALTER TABLE zendesk ENGINE=InnoDB; 
Query OK, 8 rows affected, 1 warning (0.00 sec) 
Records: 8 Duplicates: 0 Warnings: 0 

mysql> show warnings; 
+---------+------+-------------------------------------------------+ 
| Level | Code | Message           | 
+---------+------+-------------------------------------------------+ 
| Warning | 1266 | Using storage engine MyISAM for table 'zendesk' | 
+---------+------+-------------------------------------------------+ 
1 row in set (0.00 sec) 
+1

MySQL 버전? 그들 중 일부는 이런 것들에 대해 거짓말을합니다 ... – Romain

답변

3

당신이 이노가 활성화되어 있는지 확인 있습니까? SHOW ENGINES으로 확인할 수 있습니다.

기본적으로 MySQL은 인식 할 수없는 ENGINE 지시어를 무시하고 (NO_ENGINE_SUBSTITUTION을 설정하지 않은 경우) 경고를 내 보냅니다. ALTER TABLE 명령이 다음과 같은 경고 메시지를 표시했습니다.

mysql> ALTER TABLE zendesk ENGINE=InnoDB; 
Query OK, 8 rows affected, 1 warning (0.00 sec) 
+1

맞습니다, 엔진 유형은 사용할 수 없습니다. 그것을 가능하게하는 가장 좋은 방법을 지금 생각하고 있습니다. –

관련 문제