하이픈이 포함된 MySQL 데이터베이스 이름

하이픈이 포함된 MySQL 데이터베이스 이름

최근에 스테이징 데이터베이스 서버를 MySQL 5.0.84에서 5.1.72로 업그레이드했습니다. 업그레이드 후 mysqldump를 복원하려고 합니다. 덤프의 데이터베이스 이름은 입니다 gss-app. 그러나 아래의 데이터베이스 폴더 이름 /var/lib/mysql은 로 바뀌었지만 gss@022dappmysql에 로그인하여 입력하면 mysql -u root -p데이터베이스 show databases;이름만 나열 되고 명령을 사용하여 테이블을 나열할 gss-app수 있습니다 .Use Database gss-appshow tables

오류로 인해 복원이 실패했습니다 Got a packet bigger than --max_allowed_packet size. 그 당시 데이터베이스가 부분적으로 복원되었고 그 기회에 gss@022dapp폴더 이름을 gss-appmysql 쉘로 바꾸고 로그인했습니다.

데이터베이스 이름이 다음과 같이 나열되어 있는데 @mysql@gss-app데이터베이스에 들어갈 수 없습니다. 이제 를 사용하여 데이터베이스 복원을 다시 실행하고 --max_allowed_packet_size=1024M있는데 gss@022dapp폴더가 /var/lib/mysql.

의 폴더 이름에 대해 걱정해야 합니까 /var/lib/mysql? 아니면 복원하는 동안 다른 데이터베이스 이름을 사용할 수 있나요?

답변1

특히 복원하는 동안 다른 이름을 사용하는 것에 대한 질문에 대해: mysqldump를 사용하면 mysqldump databasename또는 mysqldump --databases databasename. 전자는 그 안에 진술을 넣지 않지만 create db후자는 진술을 넣습니다.

이전 명령문으로 덤프를 만든 경우 새 DB를 수동으로 생성하고 mysql newdbname < dump.sql. 후자의 경우 덤프 파일을 열고 이름을 변경할 수 있습니다.

mysqldump참고로, MySQL 측에서 이러한 차이점을 갖는 것은 나쁜 디자인이라고 생각합니다 . BTW. 구문 없이 백업하는 경우 --databases먼저 데이터베이스를 만들어야 복원할 수 있습니다. 그리고 해당 데이터베이스는 데이터베이스가 원래 가지고 있던 것과 다른 문자 집합이나 데이터 정렬을 가질 수 있습니다. 내 생각에는 데이터베이스를 덤프하면 모든 데이터와 메타데이터가 포함되어야 합니다. --routines및 을 공급해야 하는 경우에도 마찬가지입니다 --events. 다음과 같은 옵션이 --no-routines편리할 것이라고 상상할 수 있지만 기본적으로는~ 아니다덤핑 루틴? 흠.

관련 정보