Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql:添加新字段时如何同步2个表结构?_Mysql - Fatal编程技术网

Mysql:添加新字段时如何同步2个表结构?

Mysql:添加新字段时如何同步2个表结构?,mysql,Mysql,我有N个数据库:1个在开发中,N-1个在生产中,超过50个字段 我在开发中添加了新字段。然后手动将新字段添加到生产表中 是否有一种同步结构的方法:例如,如果不存在新字段,则添加新字段?(增量更新的林德?) 如果我删除表并创建,我也会丢失数据 如果我复制旧表,然后尝试插入数据,我将得到一个sql错误,告诉我旧表和新表的列数不同 insert into newTable select * from oldTable; // error different number of fields in st

我有N个数据库:1个在开发中,N-1个在生产中,超过50个字段

我在开发中添加了新字段。然后手动将新字段添加到生产表中

是否有一种同步结构的方法:例如,如果不存在新字段,则添加新字段?(增量更新的林德?) 如果我删除表并创建,我也会丢失数据

如果我复制旧表,然后尝试插入数据,我将得到一个sql错误,告诉我旧表和新表的列数不同

insert into newTable select * from oldTable; // error different number of fields in structure

只需指定要插入的列集以及要插入的列:

insert into newTable (col1,col2,...,colN)
select toCol1, toCol2, ..., toColN from oldTable;

使用命令行工具mysqldiff

mysqldiff -d sql -changes-for=server2 \
--server1=username1:username1@host1 \
--server2=username2:password2@host2 \
your_database.your_table1:your_database.your_table2 

此程序将生成SQL命令,以将\u表2的结构更改为类似于\u表1。

yes::问题在于我的表是。。80块地在生长@yarek很简单,您可以从元数据中获取列的列表,比如具有特定表的列名的表。您可以更进一步,编写过程来生成查询的冗长部分(如列列表)。