2012-12-27 157 views
0

如果我们在MySQL中使用“DESCRIBE table”语法,它将返回有关表的信息,包括字段及其默认值。如何判断一个MySQL字段是否有一个空字符串的默认值或没有默认值?

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

但是,我们如何知道有一个空字符串与不具有所有默认值的默认值的字段之间的区别?

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

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

回答

0

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

1

尝试以下操作:

Show create table tablename 
1

如果需要对应用程序具有易得可查询模式的信息,我建议使用MySQL数据库INFORMATION_SCHEMA。数据库提供可满足您需求的查询元数据表,您可能对COLUMNS表感兴趣。你可能会查询它想:

​​

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

+0

是的我认为,但问题是在PHP代码中进行实际比较。对不起,我意识到我在原始问题中没有提到这一点。我用这个信息更新了这个问题。使用“SHOW CREATE TABLE”基本上只是给出了一个大字符串,我不得不用一个精心设计的正则表达式来解析。 – atdev

+0

查看我更新的答案以满足此用例。 –

+0

感谢您的补充信息。你知道如何在共享网络主机上工作吗?有问题的应用程序分发并经常安装在共享的Web主机上。信息模式在这种情况下是否可用? – atdev

相关问题