有没有办法将一段元数据附加到MySQL数据库?我正在尝试编写代码,以便在代码升级需要时自动更新数据库模式。这需要存储单个整数值 - 模式版本。我当然可以为它创建一个完整的表格,但这对于一个简单的数字来说似乎有些过分。
答案 0 :(得分:2)
您可以使用表格注释来存储版本:
ALTER TABLE table1 COMMENT = '1.4';
您必须使用正则表达式来获取此评论:
SHOW CREATE TABLE table1;
/COMMENT='(.*)'/
答案 1 :(得分:1)
要回答标题为问题的问题,即整个数据库的元数据,而不是单个表,根据您拥有的权限,有几种选择。
最直接的方法是创建一个存储的函数,该函数需要CREATE ROUTINE
权限。 e.g。
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_metadata` (
`version` varchar(15) not null default '1.2.7.2861');
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW COLUMNS FROM `mydb`.`db_metadata`;
+---------+-------------+------+-----+------------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+------------+-------+
| version | varchar(15) | NO | | 1.2.7.2861 | |
+---------+-------------+------+-----+------------+-------+
1 row in set (0.00 sec)