2010-04-22 2 views
2

여러 테이블을 생성하는 MySQL 스크립트를 작성하려고합니다. 나는 가지고있다 :MySQL 다중 CREATE TABLE 구문 도움말?

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

그러나, 첫번째 CREATE TABLE 계산서 만 실행된다. 구문 오류가 없습니다. 음, GO에 상응하는 MSSQL이 누락 되었습니까? 나는 여기서 무엇을 잘못하고 있는가? 이 아기가 어떻게 모든 테이블을 운영하게합니까?

답변

3

create table 구문이 정상적으로 보입니다. 아마도 SQL을 실행하는 데 사용하는 도구가 첫 번째 명령문을 실행하기 만합니다.

0

시도 :

use database_name;

create table a ..; 테이블 만들기 b ..; create table c ..;

+0

나빠질 것입니다. 테이블이 전혀 작성되지 않았습니다. –

+0

이것이 테이블 A를 만들지 만 B 나 C는 만들 수 없다는 것을 확인할 수 있습니다. – DerpyNerd

0

테이블이 (예 : 기본 키 등) 서로 참조하고 있습니까? 테이블은 순차적으로 작성되므로 두 번째 테이블이 아직 작성되지 않은 테이블을 참조하면 실패합니다.

4

이 스크립트를 어떻게 실행합니까?

프로그래밍 방식으로 실행하려는 경우 MySQL API는 기본적으로 한 번에 하나의 명령문 만 실행한다는 것을 알아야합니다. 세미콜론과 함께 문자열을 짤 수 없으며 모든 명령문을 실행할 수 있습니다.

루프 내에서 각 CREATE TABLE 문을 개별적으로 실행하거나 mysql 명령 줄 클라이언트에 입력으로 제공하여 스크립트를 실행할 수 있습니다.

전체 스크립트 구문에 여러 가지 경우가 있기 때문에 응용 프로그램에 범용 스크립트 러너 클래스를 작성하는 것처럼 쉬운 일은 아닙니다.

내 대답은 Loading .sql files from within PHP입니다.

+0

이것은 정확히 문제입니다. MySQL Query Browser는 첫 번째 명령 만 처리합니다. @Florian_Gutmann은 그가 처음 이었기 때문에 점수를 사용할 수 있습니다 (48K와 비교하여 ... 당신은 Skeet과 경쟁하고 있습니까?), 담당자와 새로운 물고기를 연결해야합니다. :) –

+0

LOL! 문제 없습니다, @Florian이 정말로 처음이었습니다. 예, MySQL Query Browser의 쿼리 인터페이스는 하나의 명령문을 실행한다는 점에서 애플리케이션 코드 내에서 단일 명령문을 실행하는 것과 같습니다. Query Browser에는 파일에서 여러 명령문을 실행하는 데 사용할 수있는 "Run SQL Script ..."메뉴 옵션이 있어야합니다. –

+0

MySQL에 스크립팅 인터페이스는 한 번에 하나의 명령 만 실행합니다. 이는 좋은 일입니다. SQL 인젝션의 자동화 가능한 영향을 줄입니다. 일부 환경에는 여러 명령문에 대한 인터페이스가 있습니다 (예 : MYSQL_OPTION_MULTI_STATEMENTS_ON을 사용하는 C API 레벨 또는 mysqli_multi_query가있는 PHP에서. – bobince

0

스크립트를 어떻게 실행합니까? 명령 줄에서 실행하면 다음과 같이됩니다.

mysql -u[username] -p[password] --database DataBase1 < scriptname.sql