Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将简单元数据附加到MySQL数据库_Mysql_Schema_Metadata - Fatal编程技术网

将简单元数据附加到MySQL数据库

将简单元数据附加到MySQL数据库,mysql,schema,metadata,Mysql,Schema,Metadata,有没有办法将一段元数据附加到MySQL数据库?我正在尝试编写代码,以便在代码升级需要时自动更新数据库模式。这需要存储一个整数值——模式版本。我当然可以为它创建一个完整的表,但对于一个简单的数字来说,这似乎有点过头了。您可以使用表注释来存储版本: ALTER TABLE table1 COMMENT = '1.4'; 您必须使用regex才能从以下位置获得评论: SHOW CREATE TABLE table1; /COMMENT='(.*)'/ 要回答标题中的问题,即针对整个数据库而不是单个

有没有办法将一段元数据附加到MySQL数据库?我正在尝试编写代码,以便在代码升级需要时自动更新数据库模式。这需要存储一个整数值——模式版本。我当然可以为它创建一个完整的表,但对于一个简单的数字来说,这似乎有点过头了。

您可以使用表注释来存储版本:

ALTER TABLE table1 COMMENT = '1.4';
您必须使用regex才能从以下位置获得评论:

SHOW CREATE TABLE table1;
/COMMENT='(.*)'/

要回答标题中的问题,即针对整个数据库而不是单个表的元数据,根据您拥有的权限,有两种选择

最直接的方法是创建一个存储函数,它需要
create例程
权限。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)