0

我确定在stackoverflow上有这样的问题,但我找不到它:(

我有 2 个具有相同数据的数据库(“开发人员”数据库和“生产”数据库)。“生产”数据库是“实时”数据库 - 现场访问者会看到此数据 “开发人员”数据库是我在本地服务器上创建新功能的数据库。

当我向“开发人员”数据库添加一些新表和旧表中的一些新字段时,我遇到了这种情况。

现在我必须将这个新创建的字段和表复制到“生产”数据库(但只有结构、数据不应该被复制,并且“生产”数据库中的任何数据都不能更改)。

UPD:也许有解决方案,我可以从开发数据库中转储数据库结构,当我将其导入生产数据库时,它会自动添加所有表中的所有新字段

我应该使用哪些功能?

谢谢。

4

3 回答 3

2

你想要alter tablehttp ://dev.mysql.com/doc/refman/5.1/en/alter-table.html

于 2012-05-31T14:20:35.430 回答
1

更改现有表

alter table tablename add column newcolumn tinyint(1) default 1 AFTER othercolumn

创建一个新表

CREATE TABLE  `newtablename` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `newcolumn` int(10) unsigned NOT NULL,
  PRIMARY KEY (`id`),
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
于 2012-05-31T14:21:18.260 回答
0
  • 仅复制您可以使用的结构,例如:

    jcho360> create table t3 like t2;

    Query OK, 0 rows affected (0.05 sec).

如果要在创建结构后复制内容,可以使用:

INSERT INTO t3 SELECT * FROM t2;
  • 如果您想复制可以使用的数据(没有结构,我的意思是 PK、FK 等)

    mysql> create table t4 as select * from t1;

当然你也可以使用备份来恢复表

  • 如果要添加新列,可以使用

    alter table tablename add column newcolumn vartype;

如果您想使用另一个数据库中的表,您可以使用查询首先调用数据库,然后调用名称,例如

select * from database.tablename;

记住用户也需要其他数据库的权限。

于 2012-05-31T14:26:22.547 回答