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原则适用于我,我过早地大喊胜利。使用视图时,偶尔会出现相同的错误:-(我用您提供的代码创建了视图,但它给出了相同的错误。我认为目前我将进行简单的显式选择,而不是浏览视图。至少这似乎一直有效。我很快就大喊胜利。使用视图时,偶尔会出现相同的错误:-(我使用您提供的代码创建了视图,但它给出了相同的错误。我认为目前我将进行简单的显式选择,而不是遍历视图。至少这看起来是一致的。