我有一个Web应用程序,允许人们管理数据库中的一组用户和课程。使用Web应用程序为每个订户复制此数据库结构,并用其数据填充该订户。例如:

Subscriber 1 DB
  user table
    userID, name, age, etc
  lesson table
    lessonID, start, end, location, etc

Subscriber 2 DB
  user table
    userID, name, age, etc
  lesson table
    lessonID, start, end, location, etc


将来,当添加新功能时,我当然必须对这些数据库进行更改。我将如何更新所有数据库的数据库结构?

我知道如何添加额外的列:

ALTER TABLE user ADD COLUMN address VARCHAR DEFAULT 0;


但是我如何将其应用于所有数据库?有没有办法在MYSQL工作台中做到这一点?

该应用程序使用PHP,Google App Engine和Cloud SQL。感谢您的输入!

最佳答案

您可以很好地算出您拥有多少用户,然后在每个数据库上运行for()循环并更新必要的表。不知道这在专业发展方面有多高效率或洁净度,但我做这样的事情对我来说很有意义:

function UpdateDatabase($db_name) {
// connect to database here
// run query (queries) to update the database here
}

for($user = number_of_users; $user = 1; $user++) {
UpdateDatabase("Subscriber_" . $user);
}


当然,此代码假定您对其进行数字编号。无论您对所有用户进行编号还是列出,其想法都是相同的。 for循环将执行以下操作:


获取用户#id
更新数据库“ Subscriber_id”


因此,随着循环的进行,它将从ID为1的用户开始,一直到结尾。

09-07 21:34
查看更多