【问题标题】:Table does not show tables relations after importing database导入数据库后表不显示表关系
【发布时间】:2026-02-04 12:25:01
【问题描述】:

我使用以下命令将 MySQL 转储文件导入我的 MySQL 服务器。

mysql> create database database_name;
mysql> use database_name;

在 Linux 命令提示符下,

$ mysql -u user_name -p database_name < /tmp/test1.dmp

但是,在使用phyMyAdmin 查看数据库时,新创建的 database_name 不显示表关系。它只显示表格,但不显示关系。

在mysql数据库中导入数据库前是否需要进行任何设置?

如何提取表之间的关系?

【问题讨论】:

    标签: mysql relationship


    【解决方案1】:

    我刚刚遇到了完全相同的问题。

    在将数据库导入mysql数据库之前是否需要进行任何设置?

    不完全是,但似乎安装在 Ubuntu 或任何 Linux 发行版上的 LAMP 服务器在创建表时默认使用 MyISAM 存储引擎。在 InnoDB 上支持外键关系。 [more info]

    之后更改存储引擎。 [Source answer]

    您必须在 mysql 配置文件的 [mysqld] 部分(my.cnfmy.ini 取决于您的操作系统)下添加行 default-storage-engine = InnoDB 并重新启动 mysqld 服务。我不相信您可以通过 phpMyAdmin 更改此设置。

    在 ubuntu 上,my.cnf 位于 /etc/mysql/ 内部。

    或者,你可以使用mysql命令

    mysql> SET storage_engine=InnoDb;

    在此之后,您创建的所有表和数据库都将使用 InnoDB 作为其默认存储引擎,从而消除之后的问题。

    如何提取表之间的关系?

    更改数据库的默认引擎后。您还必须更改表的默认引擎,因为它们尚未更改。使用以下语法更改存储引擎

    ALTER TABLE <table_name> ENGINE = innodb
    

    使用 phpMyAdmin

    • 选择表后转到操作选项卡
    • 转到表格选项 [见下文]
    • 您将看到更改表存储引擎的选项
    • 将存储引擎更改为InnoDb并点击Go

    之后,使用phpMyadmin 导出数据库或使用mysqldump 转储数据库。它会显示关系。

    【讨论】: