在 MySQL 中,如何在不使用备份的情况下复制表结构?
jcho360> show create table actor\G
*************************** 1. row ***************************
Table: actor
Create Table: CREATE TABLE `actor` (
`actor_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`first_name` varchar(45) NOT NULL,
`last_name` varchar(45) NOT NULL,
`last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`actor_id`),
KEY `idx_actor_last_name` (`last_name`)
) ENGINE=InnoDB AUTO_INCREMENT=201 DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
jcho360> create table actor_copy select * from actor;
Query OK, 200 rows affected (0.07 sec)
Records: 200 Duplicates: 0 Warnings: 0
jcho360> show create table actor_copy\G
*************************** 1. row ***************************
Table: actor_copy
Create Table: CREATE TABLE `actor_copy` (
`actor_id` smallint(5) unsigned NOT NULL DEFAULT '0',
`first_name` varchar(45) CHARACTER SET utf8 NOT NULL,
`last_name` varchar(45) CHARACTER SET utf8 NOT NULL,
`last_update` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
当我做这样的事情时,我会失去结构,如 PK、FK、索引、ETC。
你应该能够做到:
获取结构,完成索引。但是外键仍然需要手动创建。
以上只会给你结构。然后,如果您愿意,您可以继续复制数据:
@DTest 绝对正确地回答了这个问题。
如果你想在定义中记录带有外键的表结构,这里有两种方法:(对于这个例子,我在数据库中创建了演员表
test
)技术#1:使用mysqldump
结果如下:
技术#2:使用mysql客户端
结果如下: