如何判断MySQL字段的默认值是空字符串还是没有默认值?

时间:2012-12-27 18:50:55

标签: php mysql

如果我们在MySQL中使用“DESCRIBE table”语法,它会返回有关该表的信息,包括字段及其默认值。

http://dev.mysql.com/doc/refman/5.0/en/describe.html

但是,我们如何区分具有默认值空字符串的字段与完全没有默认值的字段之间的区别?

在两种情况下,它都会在DESCRIBE表语句的输出中为“Default”列返回一个空值。

我需要能够使用PHP解析数据,以便轻松检测旧表格式和新表格格式之间的差异。

3 个答案:

答案 0 :(得分:1)

尝试以下方法:

Show create table tablename

答案 1 :(得分:1)

如果您需要为应用程序提供易于查询的架构信息,我建议使用MySQL INFORMATION_SCHEMA数据库。数据库提供了可查询的元数据表,可以满足您的需求,您可能对COLUMNS表感兴趣。您可以像下面这样查询:

SELECT * FROM COLUMNS WHERE `TABLE_NAME` = 'your_table' AND `TABLE_SCHEMA` = 'your_database'

当然,您需要考虑限制与您的应用程序关联的数据库用户的访问权限,因为如果有其他应用程序正在运行,您可能不希望他们看到整个INFORMATION_SCHEMA(尽管此用户显然是能够在COLUMNS表上查看有关其他数据库的信息。

答案 2 :(得分:0)

如果默认值不存在,似乎MySQL会将值报告为“NULL”。这意味着如果字段已设置为“NOT NULL”,我们可以假设默认值为NULL意味着默认值为空或设置为该字段类型的MySQL默认值。