gpt4 book ai didi

mysql - 存储有关 MySQL 数据库的元数据的简单方法

转载 作者:可可西里 更新时间:2023-11-01 08:21:07 26 4
gpt4 key购买 nike

今天早些时候,我 asked了解一种简单的方法来存储您在 SQLite 中使用的 SQL 表布局的版本号,并获得了使用 PRAGMA user_version 的建议。由于在 MySQL 中没有 Pragma 这样的东西,我想知道你将如何在 MySQL 中实现这一点(除了创建一个名为“META”的表,其中包含一个列“DB-Scheme-Version ").

只是重复我在链接问题中所说的话:我不是正在寻找一种方法来找出安装了哪个版本的 MySQL,而是要保存一个版本号,告诉我是什么版本我正在使用的 MySQL 方案,无需通过脚本检查每个表。

我还看到了this question ,但它只允许我对单个表进行版本控制。对于整个数据库是否有类似的东西,或者最好是更简单的东西(因为单独查询每个表并不有趣)?提前致谢。

MySQL 的 SET GLOBAL 可能会起作用,但我更喜欢一种解决方案,它不会在每次服务器重新启动时自行重置,并且不需要 SUPER 特权和/或访问权限要使用的配置文件。简而言之:它应该与您租用小型网络托管包时获得的标准 MySQL 数据库一起使用,而不是租用完整服务器时获得的标准 MySQL 数据库,因为您往往有更多访问权限。

最佳答案

根据您拥有的权限,有多种选择。您拥有的权限越高,解决方案就越“优雅”。

最直接的途径是创建一个存储函数,这需要CREATE ROUTINE 权限。例如

mysql> CREATE FUNCTION `mydb`.DB_VERSION() RETURNS VARCHAR(15)
RETURN '1.2.7.2861';
Query OK, 0 rows affected (0.03 sec)

mysql> SELECT `mydb`.DB_VERSION();
+--------------+
| DB_VERSION() |
+--------------+
| 1.2.7.2861 |
+--------------+
1 row in set (0.06 sec)

如果您的权限限制您只能创建表,您可以创建一个简单的表并将版本设置为默认值:

mysql> CREATE TABLE `mydb`.`db_version` (
`version` varchar(15) not null default '1.2.7.2861');
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW COLUMNS FROM `mydb`.`db_version`;
+---------+-------------+------+-----+------------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+------------+-------+
| version | varchar(15) | NO | | 1.2.7.2861 | |
+---------+-------------+------+-----+------------+-------+
1 row in set (0.00 sec)

关于mysql - 存储有关 MySQL 数据库的元数据的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9558603/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com