2017-12-05 35 views
0

에 나는 mysql에 연결하고 다음과 같이 데이터베이스를 생성하는 bash 스크립트 쓰고 있어요하지 : 데이터베이스가테이블 만들기 - MySQL의에서 작동하지만 배쉬

mysql -u root -e "CREATE DATABASE test;"

내가 볼을 작성되는 다음 명령을 사용하여 :

mysql -u root -e "SHOW databases;"

출력한다 :

+--------------------+ 
| Database   | 
+--------------------+ 
| information_schema | 
| mysql    | 
| performance_schema | 
| sys    | 
| test    | 
+--------------------+ 
01 23,516,

는 지금 그러므로 나는이 코드를 실행, USE이 새로 만든 데이터베이스와 CREATE TABLE하고자 :

나, 선택된 데이터베이스 SELECT DATABASE(); 문 반환 참조하기 위해서는
mysql -u root -e "USE test;" 
mysql -u root -e "SELECT DATABASE();" 
mysql -u root -e "CREATE TABLE information (id bigint NOT NULL AUTO_INCREMENT, name varchar(128), value_one int(255), value_two int(255), value_three int(255), value_four int(255), value_five bigint, value_six bigint);" 

:

+------------+ 
| DATABASE() | 
+------------+ 
| NULL  | 
+------------+ 

CREATE TABLE 성명을 통해이 오류가 표시됩니다.

ERROR 1046 (3D000) at line 1: No database selected 

또한, 나는이 함께 참여 시도 :

mysql -u root -e "USE test; CREATE TABLE information (...);"

을 번 출구로 전혀. 나는 여전히 같은 오류가 발생합니다.

mysql 직접 명령에 데이터베이스에 대한 연결을 지원 감안할

:

mysql test -u root -e "CREATE TABLE information (...);"

또는이 response 당 :

mysql --database=test -u root -e "CREATE TABLE information (...);"

그들은 어느 나를 위해 작동하지 않았다을 .

누가 테이블을 만들 수 없는지 아는 사람이 있습니까?

도움을 주시면 감사하겠습니다.


UPDATE

은 @Genuine의 대답에 따르면, 실제로 mysql에서 작동하지만 bash를 통해 쿼리를 실행하는 관리 할 수 ​​없습니다. 여기 mysql 터미널에서 모습입니다 :

enter image description here

내가 따라 데이터베이스에 bash 스크립트를 연결하는 방법에 대한 책을 읽은 많은 일을했습니다, 그리고 나는이 일을해야한다고 반복 :

mysql -u root -e "USE test; CREATE TABLE information (...);"

하지만 여전히 ERROR 1046 (3D000)을 촬영하지는 않습니다.

bash 구문이 잘못 되었나요?

USE test; SELECT DATABASE();

지금 표시 :

+------------+ 
| DATABASE() | 
+------------+ 
| test  | 
+------------+ 

을 :

이 @Genuine 올바른 구문을 지적하는 것도 언급 할 가치가 위의 스크립트 조각이 기록 순차적으로, 나는 먼저 CREATE DATABASE test;, 그 다음에 USE test; a 마지막으로 CREATE TABLE information (...);. 저의 최신 연결은 [email protected]이며, 기본적으로 Sequel Pro을 사용하여 먼저 내 쿼리를 테스트 할 수 있도록 도와줍니다.

답변

4

select database();은 현재 사용중인 데이터베이스 만 표시 할 수 있습니다. shell에서 각각은 별도의 명령문이며 하나의 세션에 있지 않으므로 sql을 사용할 수 없습니다.
당신은 당신이 내 데이터베이스에서 작업 할 수 use test;select database() enter image description here

그리고 mysql -u root -e "USE test; CREATE TABLE information (...);" 같은 SQL을 사용할 수 원하는 것을 보여주고 싶은 경우에, 어쩌면 당신은 첫째로 당신의 SQL을 확인해야합니다.
enter image description here

+0

맞습니다. mysql은 'USE test'를 실행합니다. SELECT DATABASE();'올바르게, 그러나, 'USE test; CREATE TABLE 정보 (...)'는 여전히 나에게 같은 오류를 준다. –

+0

이것을 디버깅하는 방법에 대한 제안이 있으십니까? @ 정품 –

+1

mysql에서'create table'을 실행하여 SQL이 올바른지 확인할 수 있습니다. 그것은 복용량이 내 mysql에서 올바르게 실행되므로 잘 작동해야합니다. – Genuine