创建数据库如果不存在dbname,则影响1行

时间:2015-04-03 17:24:11

标签: mysql database

当我尝试创建已存在的数据库时,

CREATE DATABASE IF NOT EXISTS test;
Query OK, 1 row affected (0.00 sec)
CREATE DATABASE IF NOT EXISTS test;
Query OK, 1 row affected, 1 warning (0.00 sec)

为什么它第二次显示1 row affected消息,即使它没有创建具有相同名称的新数据库?

1 个答案:

答案 0 :(得分:2)

虽然CREATE DATABASE IF NOT EXISTS test;命令不会直接修改test数据库的现有实例中的行,但它会影响mysql数据库内部存储的实际详细信息,或者可能影响其中一个派生元视图,例如information_schemaperformance_schema等。

报告的Query OK, 1 row affected (0.00 sec)指的是其中一个内部数据结构中的一行。当您重新发出CREATE DATABASE命令,并且由于IF NOT EXISTS子句而优雅地失败时,它仍然可能在内部存储元数据,可能是一个计算警告或类似的累积字段,甚至只是一个“最后一次对该数据库的行进行了'时间戳'。在任何情况下,此记录中存储的数据都会更改,并反映为“受影响的”行。