2012-08-27 108 views
0

当我遇到load infile data命令中local选项的规范时,我正在通过在dev.mysql上加载和从MySQL表中加载数据的规范。它说如果local未被使用,则如果给出了没有前导组件的文件名,服务器在缺省数据库的数据库目录中查找该文件。谁能告诉我这里的默认数据库是什么意思,以及如何设置一个?它可以从MySQL本身设置,或通过一些服务器指令?MySQL中'默认数据库'的含义

回答

1

默认数据库是一个您使用USE子句调用或在登录时指定。如果您使用SELECT * FROM tablename而不是SELECT * FROM databasename.tablename,则还使用默认数据库。

编辑

只是为了说清楚:默认的数据库不是一个静态的东西 - 它仅仅定义为一个定义的时间点上定义的会话 - 例如如PIT和开始load data infile命令的会话。

+0

然后,根据上面的答案,如果'use'指定了一个数据库,并且该指令指定了另一个数据库,那么哪个数据库将具有优先级? – SexyBeast

+1

连接时会选择[客户端]部分中的任何一个 - 稍后任何USE语句(或客户端连接中的任何覆盖)都会更改它。不同的时间点,不同的默认数据库 –

1

通常默认数据库将在database PARAM的[client]标题下在你的配置(的my.ini/my.cnf中/等)指定,如例如:

[client] 
database = name_of_default_db 
+0

这是一个严重的指令吗? – SexyBeast

+0

是的。这是一个服务器指令,在您的配置中指定。 – jornak

+0

那么这是否意味着当PHP开始一个会话时,它不需要像'use foo'那样发出一个命令,任何查询都会在默认数据库'foo'中查找表? – SexyBeast