MySQL 데이터베이스의 이름을 바꾸는 방법은 무엇입니까? DATABASE 명령에 대해

MySQL 데이터베이스의 이름을 바꾸는 방법은 무엇입니까?

MySQL 온라인 매뉴얼에서 RENAME DATABASE 명령에 대해 언급했습니다 (이 문서 페이지는 Oracle에 의해 얼마 전에 제거되었습니다).

이 문장은 MySQL 5.1.7에 추가되었지만 위험한 것으로 판명되어 MySQL 5.1.23에서 제거되었습니다.

어떻게 진행합니까? 이론적 근거 : 우리는 프로젝트의 코드 이름으로 시작했고 이제 데이터베이스 이름이 프로젝트의 최종 이름을 반영하기를 원합니다.



답변

에서 일란 Hazan에 의해 블로그 게시물 :

MySQL에서는 데이터베이스 이름 변경이 지원되지 않습니다. MySQL 데이터베이스의 이름을 바꾸려면 다음 중 하나를 수행하십시오.

  1. 새 데이터베이스를 작성하고 이전 데이터베이스의 모든 테이블 이름을 새 데이터베이스에 포함 시키십시오.

    CREATE database new_db_name;
    RENAME TABLE db_name.table1 TO new_db_name, db_name.table2 TO new_db_name;
    DROP database db_name;
    
  2. Linux 쉘에서 mysqldump를 사용하여 이전 데이터베이스를 백업 한 다음 MySQL 유틸리티를 사용하여 덤프 된 데이터베이스를 새 이름으로 복원하십시오. 마지막으로 drop database 명령을 사용하여 이전 데이터베이스를 삭제하십시오. 이 옵션은 큰 데이터베이스에서 성능이 떨어질 수 있습니다.

    mysqldump -uxxxx -pxxxx -h xxxx db_name > db_name_dump.sql
    mysql -uxxxx -pxxxx -h xxxx -e "CREATE DATABASE new_db_name"
    mysql -uxxxx -pxxxx -h xxxx new_db_name < db_name_dump.sql
    mysql -uxxxx -pxxxx -h xxxx -e "DROP DATABASE db_name"
    
  3. 간단한 Linux 스크립트 작성 (내가 가장 좋아하는 솔루션)

    #!/bin/bash
    
    dbuser=xxxx
    dbpass=xxxx
    olddb=xxxx
    newdb=xxxx
    
    mysqlconn="mysql -u $dbuser -p$dbpass -h localhost"
    
    $mysqlconn -e "CREATE DATABASE $newdb"
    params=$($mysqlconn -N -e "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='$olddb'")
    
    for name in $params; do
          $mysqlconn -e "RENAME TABLE $olddb.$name to $newdb.$name";
          echo "Renamed $olddb.$name to $newdb.$name";
    done;
    
    #$mysqlconn -e "DROP DATABASE $olddb"
    
  4. 모든 테이블이 MyISAM이면 이전 데이터베이스 폴더 이름을 바꿀 수 있습니다.

    1. MySQL 서버를 종료하십시오.
    2. 데이터베이스 폴더 이름을 새 이름으로 바꾸십시오.
    3. MySQL 서버를 시작하십시오.

답변

MySQL은 이것을 짜증나게합니다. 견실하고 신뢰할 수있는 유일한 솔루션은 사용하는 것 phpMyAdmin입니다.

Login-> click Scheme-> click Operations-> 찾기 Rename database to:-> 쓰기 NewName> click Go.

저것과 같이 쉬운. 모든 권한이 이월됩니다.


답변

매우 간단한 해결책을 찾았습니다. MySQL을 종료하고 데이터베이스 디렉토리의 이름을 바꾸고 다시 시작하십시오. 그게 다야!

이전 이름을 참조하는 SQL 코드 또는 데이터가 있으면 조금 위험합니다. 그런 다음 응용 프로그램을 다시 시작하기 전에 변경해야합니다. 하지만 그렇게 할 필요는 없었지만 YMV입니다.

인터넷 검색은 다음과 같은 몇 가지 포인터를 제공합니다.

https://stackoverflow.com/questions/67093/how-do-i-quickly-rename-a-mysql-database-change-schema-name

http://www.delphifaq.com/faq/databases/mysql/f574.shtml


답변

새 데이터베이스를 만든 다음 이전 데이터베이스에서 테이블을 .sql 파일 (mysqldump 사용)에 덤프하고 파일을 편집하고 일종의 작업을 수행 s/old_database/new_database/g한 다음 새 db로 다시 가져옵니다.
아마도 최선의 방법은 아니지만 작동합니다.


답변

MySQL Management-Tool (예 : phpMyAdmin)을 사용할 기회가 있으면 쿼리를 생성 할 때 쉽게 이름을 바꿀 수 있습니다.

phpMyAdmin에서 그들은 또한 각 테이블을 생성하고 “INSERT INTO … SELECT * FROM …”에 의해 데이터를 삽입합니다. 따라서 체인을 연결하여 데이터를 복사합니다.

이 작업을 수행 할 수 없으면 덤프를 작성하고 sql-File을 새 데이터베이스로 다시 가져 오는 것이 좋습니다.

행운을 빕니다!

안부, 벤


답변

데이터베이스 이름을 바꾸려면 다음 방법을 사용했습니다.

  1. mysqldump 또는 DB 도구 (예 : heidiSQL, mysql 관리자 등)를 사용하여 파일 백업

  2. 일부 텍스트 편집기에서 백업 (예 : backupfile.sql) 파일을 엽니 다.

  3. 데이터베이스 이름을 검색하고 바꾸고 파일을 저장하십시오.

  4. 편집 된 SQL 파일 복원


답변