4

複数のテーブルを作成するMySQLスクリプトを作成しようとしています。私は持っています:

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

ただし、最初のCREATE TABLEステートメントのみが実行されます。構文エラーは発生しません。えーと、MSSQLに相当するものがありGOませんか?私はここで何を間違っているのですか。この赤ちゃんにすべてのテーブルを実行させるにはどうすればよいですか?

4

5 に答える 5

6

このスクリプトをどのように実行していますか?

プログラムで実行しようとしている場合、MySQL API はデフォルトで一度に 1 つのステートメントしか実行しないことを知っておく必要があります。それらをセミコロンでつなぎ合わせて、すべてのステートメントを実行することを期待することはできません。

CREATE TABLEループ内で各ステートメントを個別に実行することも、mysqlコマンドライン クライアントへの入力としてスクリプトをフィードしてスクリプトを実行することもできます。

完全なスクリプト構文には多くの特殊なケースが含まれているため、アプリケーションに汎用のスクリプト ランナー クラスを記述するのは、思ったほど簡単ではありません。

Loading .sql files from within PHPに対する私の回答のコーナー ケースの例を参照してください。

于 2010-04-22T21:56:08.033 に答える
4

create table 構文は問題ないようです。おそらく、SQL の実行に使用するツールは、最初のステートメントを実行するだけです。

于 2010-04-22T21:48:46.837 に答える
1

これを試して:

database_nameを使用します。

テーブルを作成するa..; テーブルb..を作成します。テーブルc..を作成します。

于 2010-04-22T21:47:00.817 に答える
0

テーブルは相互に参照していますか(主キーなど)?テーブルはシリアルに作成されるため、2番目のテーブルがまだ作成されていないテーブルを参照している場合、失敗します。

于 2010-04-22T21:47:29.720 に答える
0

スクリプトをどのように実行しますか? コマンドラインから実行する場合は、次のようになります。

mysql -u[username] -p[password] --database DataBase1 < scriptname.sql
于 2010-04-22T21:56:52.150 に答える