MySQL未定义索引:创建视图时的列信息

MySQL未定义索引:创建视图时的列信息,mysql,phpmyadmin,Mysql,Phpmyadmin,我已经定义了此查询,它可以正常工作: SELECT `a`.`id`, `a`.`fld_tribunal` AS `fld_tribunal`, `a`.`fld_date` AS `fld_date`, `a`.`fld_juge` AS `fld_juge`, `a`.`fld_representant_prefecture` AS `fld_representant_prefecture`, `a`.

我已经定义了此查询,它可以正常工作:

    SELECT `a`.`id`,
        `a`.`fld_tribunal` AS `fld_tribunal`,
        `a`.`fld_date` AS `fld_date`,
        `a`.`fld_juge` AS `fld_juge`,
        `a`.`fld_representant_prefecture` AS `fld_representant_prefecture`,
        `a`.`fld_interpretes` AS `fld_interpretes`,
        `a`.`fld_nombre_policiers` AS `fld_nombre_policiers`,
        `a`.`fld_retenus_menottes` AS `fld_retenus_menottes`,
        `a`.`fld_representants_cdv` AS `fld_representants_cdv`,
        `a`.`fld_public` AS `fld_public`,
        `a`.`fld_duree_audience` AS `fld_duree_audience`,
        `a`.`fld_duree_delibere` AS `fld_duree_delibere`
    FROM `cr_tribunaux` `a`
    INNER JOIN `list_records` `r`
        ON ((`r`.`form_id` = 8) AND (`r`.`record_id` = `a`.`id`))
    INNER JOIN `list_states` `s`
        ON ((`s`.`id` = `r`.`state_id`) AND (`s`.`form_id` = `r`.`form_id`) )
    WHERE `s`.`id`=74 OR `s`.`id`=75
    ORDER BY `a`.`fld_date` ASC
但当我尝试使用phpMyadmin从中创建视图时,会出现以下错误:

Notice in ./libraries/SystemDatabase.php#52
Undefined index: column_info

Backtrace

./view_create.php#140: PMA\libraries\SystemDatabase->getExistingTransformationData(string 'maindb')
当我删除
internaljoin
语句时,视图创建得很好,因此在我使用的语法中,或者(我希望不是)在连接所针对的表中,一定有某种东西。 我尝试了不同的括号组合,但没有任何帮助

三个相关表格的表格创建代码为:

CREATE TABLE `cr_tribunaux` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `storage_id` int(11) NOT NULL DEFAULT '4',
 `user_id` int(11) NOT NULL DEFAULT '0',
 `created` datetime NOT NULL DEFAULT '2018-07-10 09:51:32',
 `created_by` varchar(255) NOT NULL DEFAULT '',
 `modified_user_id` int(11) NOT NULL DEFAULT '0',
 `modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
 `modified_by` varchar(255) NOT NULL DEFAULT '',
 `fld_tribunal` text NOT NULL,
 `fld_juge` text NOT NULL,
 `fld_date` text NOT NULL,
 `fld_representant_prefecture` text NOT NULL,
 `fld_nombre_policiers` text NOT NULL,
 `fld_retenus_menottes` text,
 `fld_public` text NOT NULL,
 `fld_representants_cdv` text NOT NULL,
 `fld_duree_delibere` text,
 `fld_compte_rendu` text NOT NULL,
 `fld_remarques` text NOT NULL,
 `fld_interpretes` text NOT NULL,
 `fld_duree_audience` text NOT NULL,
 `fld_retenus_menottes_detail` text NOT NULL,
 PRIMARY KEY (`id`),
 KEY `storage_id` (`storage_id`),
 KEY `user_id` (`user_id`),
 KEY `created` (`created`),
 KEY `modified_user_id` (`modified_user_id`),
 KEY `modified` (`modified`)
) ENGINE=MyISAM AUTO_INCREMENT=747 DEFAULT CHARSET=utf8```

CREATE TABLE `list_states` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `form_id` int(11) NOT NULL DEFAULT '0',
 `title` varchar(255) NOT NULL DEFAULT '',
 `color` varchar(255) NOT NULL DEFAULT '',
 `action` varchar(255) NOT NULL DEFAULT '',
 `published` tinyint(4) NOT NULL DEFAULT '0',
 PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=221 DEFAULT CHARSET=utf8


CREATE TABLE `list_records` (
 `id` bigint(20) NOT NULL AUTO_INCREMENT,
 `form_id` int(11) NOT NULL DEFAULT '0',
 `record_id` bigint(20) NOT NULL DEFAULT '0',
 `state_id` int(11) NOT NULL DEFAULT '0',
 `reference_id` int(11) NOT NULL DEFAULT '0',
 `published` tinyint(1) NOT NULL DEFAULT '0',
 PRIMARY KEY (`id`),
 KEY `form_id` (`form_id`,`record_id`,`state_id`)
) ENGINE=MyISAM AUTO_INCREMENT=811 DEFAULT CHARSET=utf8

对于创建视图,您可以使用以下代码

CREATE VIEW sample_test AS
SELECT `a`.`id`,
        `a`.`fld_tribunal` AS `fld_tribunal`,
        `a`.`fld_date` AS `fld_date`,
        `a`.`fld_juge` AS `fld_juge`,
        `a`.`fld_representant_prefecture` AS `fld_representant_prefecture`,
        `a`.`fld_interpretes` AS `fld_interpretes`,
        `a`.`fld_nombre_policiers` AS `fld_nombre_policiers`,
        `a`.`fld_retenus_menottes` AS `fld_retenus_menottes`,
        `a`.`fld_representants_cdv` AS `fld_representants_cdv`,
        `a`.`fld_public` AS `fld_public`,
        `a`.`fld_duree_audience` AS `fld_duree_audience`,
        `a`.`fld_duree_delibere` AS `fld_duree_delibere`
    FROM `cr_tribunaux` `a`
    INNER JOIN `list_records` `r`
        ON ((`r`.`form_id` = 8) AND (`r`.`record_id` = `a`.`id`))
    INNER JOIN `list_states` `s`
        ON ((`s`.`id` = `r`.`state_id`) AND (`s`.`form_id` = `r`.`form_id`) )
    WHERE `s`.`id`=74 OR `s`.`id`=75
    ORDER BY `a`.`fld_date` ASC;

即使尝试了这个,如果你得到了一个错误,那么它一定是你的PHPMyadmin的问题。根据您的操作系统,您可以尝试使用任何其他客户端(如mysqlworkbench、sqlyog、HeidiSql)来创建此视图。

对于创建视图,您可以使用以下代码

CREATE VIEW sample_test AS
SELECT `a`.`id`,
        `a`.`fld_tribunal` AS `fld_tribunal`,
        `a`.`fld_date` AS `fld_date`,
        `a`.`fld_juge` AS `fld_juge`,
        `a`.`fld_representant_prefecture` AS `fld_representant_prefecture`,
        `a`.`fld_interpretes` AS `fld_interpretes`,
        `a`.`fld_nombre_policiers` AS `fld_nombre_policiers`,
        `a`.`fld_retenus_menottes` AS `fld_retenus_menottes`,
        `a`.`fld_representants_cdv` AS `fld_representants_cdv`,
        `a`.`fld_public` AS `fld_public`,
        `a`.`fld_duree_audience` AS `fld_duree_audience`,
        `a`.`fld_duree_delibere` AS `fld_duree_delibere`
    FROM `cr_tribunaux` `a`
    INNER JOIN `list_records` `r`
        ON ((`r`.`form_id` = 8) AND (`r`.`record_id` = `a`.`id`))
    INNER JOIN `list_states` `s`
        ON ((`s`.`id` = `r`.`state_id`) AND (`s`.`form_id` = `r`.`form_id`) )
    WHERE `s`.`id`=74 OR `s`.`id`=75
    ORDER BY `a`.`fld_date` ASC;

即使尝试了这个,如果你得到了一个错误,那么它一定是你的PHPMyadmin的问题。根据您的操作系统,您可以尝试使用任何其他客户端(如mysqlworkbench、sqlyog、HeidiSql)来创建此视图。

我找到了一种解决问题的方法,这是一个很好的解决方案。 我试图创建的视图从cr_tribunaux表中选择“application valid”记录。该视图后来被连接到一个二级表,生成一个包含我所需的所有列的“有效”记录列表。 然后,我创建了一个更简单的视图,没有与“list_records”和“list_states”表的连接,在第二个视图中,我引入了记录验证功能

奇怪的是,Mysql并没有抱怨这个新视图,所以现在我有了一个最终的复合视图,它给出了我想要的结果:-)

我想Mysql需要一些“帮助”来理解如何做我想做的事情

虽然这解决了我的问题,但它没有给出导致错误的根本问题的答案


谢谢你的帮助。

我找到了解决这个问题的方法,这是一个很好的解决方案。 我试图创建的视图从cr_tribunaux表中选择“application valid”记录。该视图后来被连接到一个二级表,生成一个包含我所需的所有列的“有效”记录列表。 然后,我创建了一个更简单的视图,没有与“list_records”和“list_states”表的连接,在第二个视图中,我引入了记录验证功能

奇怪的是,Mysql并没有抱怨这个新视图,所以现在我有了一个最终的复合视图,它给出了我想要的结果:-)

我想Mysql需要一些“帮助”来理解如何做我想做的事情

虽然这解决了我的问题,但它没有给出导致错误的根本问题的答案


谢谢您的帮助。

您能为所有3个表添加
创建表
语法吗?您可以通过命令
SHOW CREATE TABLE[TABLE name]
执行此操作。您可以在所有3个表中添加
CREATE TABLE
语法吗?您可以通过命令
SHOW CREATE TABLE[TABLE name]
实现这一点,鉴于我找到的解决方法,我认为这不是PHPMyadmin问题,而是理解如何构建视图的Mysql问题,因此,旧的KISS原则适用鉴于我发现的解决方法,我认为这不是PHPMyadmin问题,而是Mysql在理解如何构建视图方面的问题,因此旧的KISS原则适用于我,我过早地大喊胜利。使用视图时,偶尔会出现相同的错误:-(我用您提供的代码创建了视图,但它给出了相同的错误。我认为目前我将进行简单的显式选择,而不是浏览视图。至少这似乎一直有效。我很快就大喊胜利。使用视图时,偶尔会出现相同的错误:-(我使用您提供的代码创建了视图,但它给出了相同的错误。我认为目前我将进行简单的显式选择,而不是遍历视图。至少这看起来是一致的。