gpt4 book ai didi

php - 创建表否则更改表

转载 作者:可可西里 更新时间:2023-11-01 07:36:07 24 4
gpt4 key购买 nike

这似乎是一个简单的问题,但经过一段时间的搜索我找不到答案。

我目前在我的本地数据库中有一个 MySQL 表,供 web 应用程序使用,它们在远程服务器的数据库中有相同的表。现在,我正在通过 PHP 使用 CREATE TABLE IF NOT EXISTS 命令在数据库上创建表:

CREATE TABLE IF NOT EXISTS users (  
`id` int(10) NOT NULL AUTO_INCREMENT,
`username` varchar(18) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

但是,假设我对本地数据库进行了修改,例如添加了一个列。每次更改本地数据库时都必须去更改远程数据库,这真的很烦人。如果表不存在,是否有更简单的方法来运行代码来创建表,如果存在,请确保它的结构与创建表的结构相匹配?

这里有一个例子,可以让我想表达的意思更清楚一些。假设在本地数据库上我有一个用户表,我决定在我的 webapp 中有另一个列 password。所以我转到本地数据库并添加一个 password 列。是否有我可以运行的 PHP/MySQL 代码来检查用户表是否存在,如果存在,请确保它有一个 password 列,如果不存在,请添加它?

最佳答案

您实际上正在寻找的是迁移,例如您正在寻找一种模式管理工具,它可以让您在版本化代码差异中管理数据库结构。

例如,对于您描述的场景,您将首先创建一个脚本来创建表,例如001_create_user_table.sql。然后您将使用模式管理器连接这些更改并将其部署到您的数据库。

当您想更改或添加某些内容时,您只需编写另一个脚本,例如,002_Add_Password_Column_To_User_Table.sql。只需填写代码即可进行更改。然后再次运行架构管理器。

通常,您告诉模式管理器检查所有现有的迁移文件。每次运行时,架构管理器都会更新数据库中的变更日志表,因此当您运行它时,它会知道应该应用您的哪些脚本。

好处是,您可以将这些迁移添加到您的常规 VCS 中,因此您将始终知道您在哪个应用程序版本中拥有哪个数据库模式。并且您将拥有适合它们的变更日志。

关于php - 创建表否则更改表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4097868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com