我正在使用 mysql 5.7.19-log 服务器,我正在开发应用程序监视工具,我需要监视 mysql 服务器的 session 详细信息。在这个过程中了解到sys.session表中的pid列可以为空。我想知道什么情况下pid可以为空?
当我在 mysql shell 中执行 desc session 时,结果如下:
mysql>desc session;
+------------------------+------------------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+------------------------------------------+------+-----+---------+-------+
| thd_id | bigint(20) unsigned | NO | | NULL | |
| conn_id | bigint(20) unsigned | YES | | NULL | |
| user | varchar(128) | YES | | NULL | |
| db | varchar(64) | YES | | NULL | |
| command | varchar(16) | YES | | NULL | |
| state | varchar(64) | YES | | NULL | |
| time | bigint(20) | YES | | NULL | |
| current_statement | longtext | YES | | NULL | |
| statement_latency | text | YES | | NULL | |
| progress | decimal(26,2) | YES | | NULL | |
| lock_latency | text | YES | | NULL | |
| rows_examined | bigint(20) unsigned | YES | | NULL | |
| rows_sent | bigint(20) unsigned | YES | | NULL | |
| rows_affected | bigint(20) unsigned | YES | | NULL | |
| tmp_tables | bigint(20) unsigned | YES | | NULL | |
| tmp_disk_tables | bigint(20) unsigned | YES | | NULL | |
| full_scan | varchar(3) | NO | | | |
| last_statement | longtext | YES | | NULL | |
| last_statement_latency | text | YES | | NULL | |
| current_memory | text | YES | | NULL | |
| last_wait | varchar(128) | YES | | NULL | |
| last_wait_latency | text | YES | | NULL | |
| source | varchar(64) | YES | | NULL | |
| trx_latency | text | YES | | NULL | |
| trx_state | enum('ACTIVE','COMMITTED','ROLLED BACK') | YES | | NULL | |
| trx_autocommit | enum('YES','NO') | YES | | NULL | |
| pid | varchar(1024) | YES | | NULL | |
| program_name | varchar(1024) | YES | | NULL | |
+------------------------+------------------------------------------+------+-----+---------+-------+
28 rows in set (0.00 sec)```
最佳答案
在屏幕截图中,您需要检查名称为 Null
的列。它表示某个字段的值是否可以为空。在您的情况下,pid
可以为 null
,因为根据表的描述,pid
允许 Null
。
遵循pid
可能为null
的情况。
- 将
pid
插入为null
值
- 将
INSERT INTO session (pid, program_name) values (null, 'test1'); // pid: null
- 不要插入
pid
- 不要插入
INSERT INTO session (program_name) values ('test1'); // pid: null
- 将
pid
更新为null
值
- 将
UPDATE session SET pid = null WHERE `thd_id` = 1; // pid: null
关于mysql - mysql中sys.session的pid列什么时候将为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57693582/