我正在使用一个 PHP 框架,该框架的数据库模型类足够智能,可以在架构更改时进行 self 升级。他们在某种程度上通过检查类似于以下伪代码的检查列表来做到这一点:
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.
}
我在最新的周期中遇到了障碍,因为我们必须做的事情之一是扩大在先前版本中错误创建的列的大小。因此,为了让模型正确地 self 升级,它不能仅仅根据列是否存在的检查来决定升级;而是要根据列是否存在来决定升级。它必须知道该列的当前格式,并确定它是否仍然太短。
我已经浏览了 PHP 和 PDO 文档,但没有找到一种非实验性、非弃用的方法来可靠地获取此信息。我能立即想到的唯一方法是尝试插入比原始长度长但比新长度短的插入,然后选择结果;如果它被截断,则说明该列太短,需要升级。不过,这似乎并不理想,所以我在这里寻找更好的替代方案。
最佳答案
您可以使用 MySQL 语句 DESCRIBE myTable;
它将为您提供有关每列的信息
关于php - 我可以在 PHP 中获取数据库列的规范吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36460236/