Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.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_Checksum - Fatal编程技术网

散列MySQL数据库模式

散列MySQL数据库模式,mysql,checksum,Mysql,Checksum,我想对MySQL数据库模式(没有数据)进行哈希/签名,以便对其进行校验和,以确保其他人不会修改它 我该如何实现它?据我所知,您需要表校验和: checksum table `table` 所以,只要对一个空表进行校验和,我想整个模式(所有表)如何?是的,它包含数据。您需要一份空表的副本。我要做的是mysqldump-d数据库-这将转储整个数据库,然后创建测试数据库,创建所有表(它们将是空的,因为-d标志---无数据),并进行校验和。是的,我不认为有一个简单的方法来做你想做的事。对不起,我不明白

我想对MySQL数据库模式(没有数据)进行哈希/签名,以便对其进行校验和,以确保其他人不会修改它


我该如何实现它?

据我所知,您需要表校验和:

checksum table `table`

所以,只要对一个空表进行校验和,我想整个模式(所有表)如何?是的,它包含数据。您需要一份空表的副本。我要做的是
mysqldump-d数据库
-这将转储整个数据库,然后创建测试数据库,创建所有表(它们将是空的,因为
-d
标志-
--无数据
),并进行校验和。是的,我不认为有一个简单的方法来做你想做的事。对不起,我不明白这个问题。你想检查是否没有人改变桌子。在这种情况下,我可能会使用
showcreatetable'table'
检查所有表,并为所有表设置初始结构进行比较。这对我来说比较简单,然后进行转储,然后使用
校验和检查所有表。。。我没有想到:)这种方法还可以,但是
mysqldump
包含了关于它的版本和mysql服务器版本的信息。如果您升级/降级mysql服务器或mysql客户端(这将导致mysqldump的升级/降级),您生成的文件的签名将明显不同,尽管模式没有更改。为了避免这种情况,请使用mysqldump的
--compact
选项如下:
mysqldump--compact-u root--password=root--host=127.0.0.1 test | md5sum
。对不起,如果空表的
校验和表“table”
始终为0,那么无论表结构是什么,这个答案怎么正确呢?(MySQL 5.5)谢谢你的回答,你能解释一下你的答案吗?
SELECT HEX( CRC32 ( SUM( CRC32( CONCAT(
   COALESCE(TABLE_NAME,''),
   COALESCE(COLUMN_NAME,''),
   COALESCE(ORDINAL_POSITION,''),
   COALESCE(COLUMN_DEFAULT,''),
   COALESCE(IS_NULLABLE,''),
   COALESCE(DATA_TYPE,''),
   COALESCE(CHARACTER_MAXIMUM_LENGTH,''),
   COALESCE(CHARACTER_OCTET_LENGTH,''),
   COALESCE(NUMERIC_PRECISION,''),
   COALESCE(NUMERIC_SCALE,''),
   COALESCE(CHARACTER_SET_NAME,''),
   COALESCE(COLLATION_NAME,''),
   COALESCE(COLLATION_NAME,''),
   COALESCE(COLUMN_TYPE,''),
   COALESCE(COLUMN_KEY,'')
  ) ) ) ) ) AS 'hash'
FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'database_name';