我正在使用一个PHP框架,其数据库模型类足够智能,可以在架构更改时自行升级。他们通过查看类似于以下伪代码的检查列表来执行此操作:
I am version 4.
function UpgradeVersion()
{
If the DB doesn't yet have a column "foo" in this table,
I'm version 1. Add the "foo" column.
If the DB doesn't yet have a column "bar" in this table,
I'm version 2. Add the "bar" column.
If the DB still has a deprecated "fargle" in this table,
I'm version 3. Rename "fargle" to "gargle".
I'm now up to version 4.
}
我在最新的周期中遇到了麻烦,因为我们必须做的事情之一就是扩大在之前版本中错误创建的列的大小。因此,为了使模型能够正确升级,它可以根据对列的存在性的检查来决定升级;它必须知道列的当前格式,并确定它是否仍然太短。
我查看了PHP和PDO文档但未找到非实验性的,不推荐使用的方法来可靠地获取此信息。我唯一可以想到的黑客就是尝试插入一个比原始长度更长的插入,但是比新的插入更短,然后选择结果;如果它被截断,那么该列太短并需要升级。然而,这看起来并不理想,所以我会在这里寻找更好的选择。
答案 0 :(得分:2)
您可以使用MySQL语句DESCRIBE myTable;
,它会为您提供有关每列的信息