smjordan 发表于 2015-03-13 11:27

mysql 数据库名有空格,脚本如何连?

有一个数据库名是:Cisco wifi info
其中有一个表:connectMac

我在shell中需要写脚本连接这个表读取数据,但因为库名有空格,所以每次mysql都说没有选择表,因为是库名中的空格隔开,语句无法分析。

以下是我测试过的脚本语句:

我直接登录到远程mysql后,输入
use Cisco wifi info

错误信息:ERROR 1044 (42000): Access denied for user 'aaa'@'%' to database 'Cisco'

在shell脚本中
mysql -h$APhost -u$APuser -p$APsqlpw -e "select * from Cisco wifi info.connectMac" | sed 1d >$File

错误信息:ERROR 1046 (3D000) at line 1: No database selected
==============================================================
dataname="Cisco wifi info.connectMac"
mysql -h$APhost -u$APuser -p$APsqlpw -e "select * $dataname" | sed 1d >$File

错误信息:ERROR 1046 (3D000) at line 1: No database selected

这种情况要如何办?

asdf2110 发表于 2015-03-13 14:10

本帖最后由 asdf2110 于 2015-03-13 14:15 编辑

数据库名用反单引号括起来,就是键盘上数字1前面那个符号echo "select count(*) from \`a b\`.t" | /opt/mastermysql/mysql/bin/mysql -u root -h 127.0.0.1 -P 3309 test/opt/mastermysql/mysql/bin/mysql -u root -h 127.0.0.1 -P 3309 -e "use \`a b\`;select count(*) from t"回复 1# smjordan


   

lyhabc 发表于 2015-03-13 17:33

键盘上数字1前面那个符号单引号就是MySQL的QUOTED_IDENTIFIER


如果使用了单引号那么MySQL的关键字也可以作为表名和列名

每种数据库都会各自的QUOTED_IDENTIFIER符号,只是符号不一样,用途都是一样的

asdf2110 发表于 2015-03-13 20:54

你还求职网络运维?
下面就有个京东的在招DBA啊“京东招聘资深MySQL DBA ”

回复 3# lyhabc


   

lyhabc 发表于 2015-03-14 08:06

asdf2110
先谢谢你,我想继续待在广州,北京太远了,不过还是谢谢你

andychinaunix 发表于 2015-03-26 11:29

使用反单引号将库名包起来即可。
回复 1# smjordan


   
页: [1]
查看完整版本: mysql 数据库名有空格,脚本如何连?