当我尝试创建已存在的数据库时,
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
消息,即使它没有创建具有相同名称的新数据库?
答案 0 :(得分:2)
虽然CREATE DATABASE IF NOT EXISTS test;
命令不会直接修改test
数据库的现有实例中的行,但它会影响mysql
数据库内部存储的实际详细信息,或者可能影响其中一个派生元视图,例如information_schema
或performance_schema
等。
报告的Query OK, 1 row affected (0.00 sec)
指的是其中一个内部数据结构中的一行。当您重新发出CREATE DATABASE
命令,并且由于IF NOT EXISTS
子句而优雅地失败时,它仍然可能在内部存储元数据,可能是一个计算警告或类似的累积字段,甚至只是一个“最后一次对该数据库的行进行了'时间戳'。在任何情况下,此记录中存储的数据都会更改,并反映为“受影响的”行。