MySQL Shell全局变量

MySQL Shell全局变量
MySQL Shell保留一些变量作为全局变量,这些变量被分配给脚本中常用的对象。本节描述可用的全局变量,并提供使用它们的示例。全局变量是:
.session 表示全局会话(如果已建立)
.db 表示已定义的模式,例如由URI定义的模式。

MySQL Shell为与使用全局变量相关的常见情况提供交互式错误解决方案。例如:
.试图使用未定义的session全局变量
.试图使用session检索不存在的模式
.试图使用未定义的db全局变量

未定义的全局会话
全局session变量在全局会话建立时设置。建立全局会话后,在MySQL Shell中使用session语句显示会话类型及其URI:

mysql-js> session

mysql-js>

如果没有建立全局会话,MySQL Shell显示如下信息:

mysql-js> session

mysql-js>

如果在没有建立全局会话的情况下试图使用session变量,则会启动交互式错误解析,并提示您提供建立全局会话所需的信息。如果会话成功建立,它会被赋值给session变量。提示如下:
.初始提示解释说没有建立全局会话,并询问是否应该建立全局会话。
.如果选择设置全局会话,则请求会话类型
.请求存储的会话的URI或别名
.如果需要,则需要密码

例如:

mysql-js> session.uri
The global session is not set, do you want to establish a session? [y/N]: y
Please specify the session type:
1) X
2) Node
3) Classic
Type: 2
Please specify the MySQL server URI (or $slias): root@localhost
Enter password:*******
root@localhost:33060
mysql-js>

未定义db变量
在建立全局会话并配置默认模式时,将设置global db变量。例如,使用root@localhost/sakila这样的URI建立一个全局会话,连接到localhost上的MySQL服务器,端口为33060。作为root用户,将模式sakila分配给全局变量db。定义好模式后,在MySQL Shell提示符下执行db命令会打印出模式名,如下所示:

mysql-js> db

mysql-js>

如果未建立全局会话,则显示如下信息:

mysql-js> db

mysql-js>

如果在没有建立全局会话的情况下尝试使用db变量,则会显示以下错误:

mysql-js> db.getCollections()
LogicError: The db variable is not set, establish a global session first.
at (shell):1:2
in db.getCollections()

如果已经建立了全局会话,但您试图使用未定义的数据库,则开始交互式错误解决,并提示您通过提供模式名称来定义活动模式。如果成功,则将db变量设置为定义的模式。例如:

mysql-js> db.getCollections()
The db variable is not set, do you want to set the active schema? [y/N]:y
Please specify the schema:world_x
[

]
mysql-js> db

mysql-js>

检索一个不存在的模式
如果尝试使用会话检索不存在的模式,交互式错误解决方案提供了创建模式的选项。

mysql-js> var mySchema = session.getSchema('my_test')
The schema my_test does not exist, do you want to create it? [y/N]: y
mysql-js> mySchema

mysql-js>

在所有情况下,如果您不提供解决每种情况所需的信息,则在未定义的变量上执行请求的语句将显示正确的结果。

发表评论

电子邮件地址不会被公开。