2009-03-27 8 views
12

J'utilise MySQL 5.0.Comment peut-on renommer le nom de base de données MySQL 5.0

J'ai créé une base de données nommée accounts, mais maintenant je veux changer le nom de base de données FinanceAccounts.

Comment puis-je changer le nom de la base de données en MySQL 5.0?

+1

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

Répondre

21

Je pense qu'il n'y a qu'une seule façon (en plus de renommer le répertoire dans le MySQL datadir qui échouera pour les tables InnoDB):

  • créer une nouvelle base de données (avec le nom nouveau)
  • dump faire de l'ancienne base de données
  • importation des données dans la nouvelle sous-évaluées base de données
  • supprimer ancienne base de données

Pour créer le nouveau DB:

mysql> CREATE DATABASE new_database; 

Pour créer la décharge de l'ancien DB:

mysqldump -u "your_username" -p --lock-tables old_database > old_database_dump.sql 

Pour importer de données sauvegardées dans la nouvelle DB:

mysql -u "your username" -p new_database < old_database_dump.sql 

Pour supprimer l'ancien DB:

mysql> DROP DATABASE old_database; 

Gardez à l'esprit que vos autorisations sur l'ancien DB Mal besoin d'être supprimé aussi bien. Voir ici pour plus d'informations: Revoke all privileges for all users on a MySQL DB

MySQL 5.1.7 à MySQL 5.1.22 avait une commande RENAME {DATABASE | SCHEMA} db_name TO new_db_name; mais celui-ci a été supprimée dans MySQL 5.1.23 pour être trop dangereux.

17

La meilleure façon est probablement de renommer chacune des tables dans la base de données au nouveau nom. Par exemple:

Mise à jour: Il y a deux étapes ici

  1. Créer une nouvelle base de données que vous voulez dire "nouveaux comptes"

    CREATE DATABASE newaccounts;

  2. Migrate chaque table une par une

    RENAME TABLE DE accounts.tablename newaccounts.tablename;

Voir http://dev.mysql.com/doc/refman/5.0/en/rename-table.html pour plus d'informations.

+0

Nous parlons de renommer une BASE DE DONNEES ... Renommer une table ne pose aucun problème –

+2

c'est ce qu'il dit: RENAME TABLE database_name.table_name TO nouveau_database_name.table_name –

+0

C'est exact - n'a pas pensé à ce pos sabilité. Cette méthode peut générer des problèmes avec les transactions ouvertes ou les verrous actuels sur cette table. Mais néanmoins c'est une solution. Désolé pour mon premier commentaire! –

1

MySQL aspire un peu pour ça. La seule solution fiable et solide consiste à utiliser phpMyAdmin. Connexion> cliquez sur Schéma> cliquez sur "Opérations"> recherchez "Renommer la base de données":> NouveauNom> cliquez sur "Aller"... "

Aussi simple que cela Toutes les autorisations sont reportées

2

ici, je renomme base de données mydb à e-commerce, vous suivez ces étapes, mais usin phpmyadmin est de facile

CREATE DATABASE `ecommerce` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 

RENAME TABLE `mydb`.`Articles` TO `ecommerce`.`Articles` ; 

RENAME TABLE `mydb`.`Categories` TO `ecommerce`.`Categories` ; 

RENAME TABLE `mydb`.`Utilisateurs` TO `ecommerce`.`Utilisateurs` ; 

ALTER TABLE `Articles` ADD CONSTRAINT fk_Articles_Categories FOREIGN KEY (Categorie_id) REFERENCES Categories(id) ON DELETE NO ACTION ON UPDATE NO ACTION ; 

DROP DATABASE `mydb` ; 
+0

Ça marche aussi pour moi –

Questions connexes