Question

Je suis en train d'écrire un script MySQL qui crée plusieurs tables. J'ai:

CREATE TABLE `DataBase1`.`tbl_this`(
...
);
CREATE TABLE `DataBase1`.`tbl_that`(
...
);
... (14 more) ...

, seule la première déclaration de CREATE TABLE est exécutée. Je reçois aucune erreur de syntaxe. Erm, suis-je manque l'équivalent de MSSQL GO? Qu'est-ce que je fais mal ici; comment puis-je obtenir ce bébé pour exécuter toutes les tables?

Était-ce utile?

La solution

La syntaxe créer la table semble bien. Probablement l'outil que vous utilisez pour exécuter votre SQL exécute simplement la première instruction.

Autres conseils

Comment allez-vous ce script en cours d'exécution?

Si vous essayez d'exécuter un programme, vous devez savoir que l'API MySQL exécute une seule instruction à la fois par défaut. Vous ne pouvez pas les cordes avec des points-virgules et attendre son exécution toutes les déclarations.

Vous pouvez exécuter chaque instruction CREATE TABLE individuellement dans une boucle, ou bien vous pouvez exécuter un script en alimentant comme entrée au client mysql ligne de commande.

Il est pas aussi facile qu'il semble écrire un script d'usage général classe coureur dans votre application, parce que la syntaxe complète du script inclut de nombreux cas de coin.

Voir des exemples de cas d'angle dans ma réponse à Chargement .sql fichiers à partir de PHP .

essayez ceci:

bdd utilisation;

create table un ..; create table b ..; create table c ..;

sont les tables référencement (par exemple les clés primaires et similaires) les uns des autres? Les tables sont créées en série, donc si votre deuxième table est référence à une table qui n'a pas encore été créé, il échouera.

Comment exécuter-vous votre script? Si vous le faites de la ligne de commande, il doit être quelque chose comme ceci:

mysql -u[username] -p[password] --database DataBase1 < scriptname.sql
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top