【发布时间】:2017-12-05 03:00:16
【问题描述】:
我正在编写一个连接到mysql 的bash 脚本并创建一个数据库,如下所示:
mysql -u root -e "CREATE DATABASE test;"
我看到数据库是使用以下命令创建的:
mysql -u root -e "SHOW databases;"
哪些输出:
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
现在我希望USE 这个新创建的数据库和CREATE TABLE,因此我运行以下代码:
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);"
为了让我查看选择了哪个数据库,SELECT DATABASE(); 语句返回:
+------------+
| 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 (...);"
它们也不适合我。
有人知道我为什么不能创建表吗?
感谢任何帮助。
更新
根据@Genuine 的回答,它实际上在mysql 中有效,但我无法通过bash 运行查询。这是mysql 从终端看到的样子:
我已经阅读了大量有关如何将 bash 脚本连接到相应数据库的信息,我重申这应该可以:
mysql -u root -e "USE test; CREATE TABLE information (...);"
但它没有并且仍然拍摄ERROR 1046 (3D000)。
我的bash 语法有问题吗?
还值得一提的是@Genuine 指出了正确的语法:
USE test; SELECT DATABASE();
现在显示:
+------------+
| DATABASE() |
+------------+
| test |
+------------+
注意:上面的脚本sn-ps是按顺序写的,也就是说我先CREATE DATABASE test;,然后USE test;,最后CREATE TABLE information (...);。我最近的连接是通过 root@127.0.0.1 进行的,我基本上是利用 Sequel Pro 来帮助我首先测试我的查询。
【问题讨论】:
标签: mysql sql database bash create-table