我现在对phpmyadmin有一个相当奇怪的问题,它似乎允许我查看我的数据库,但是我不能查看其中包含的表,除非我从命令控制台执行一个单独的select命令。我好像搞不懂发生了什么事。这很烦人,因为我不想每次添加新列之类的内容时都执行alter命令。有人知道怎么回事吗?
最佳答案
有同样的问题。但只有在新创建的数据库中导入转储之后。通过mysql.exe显示表确实列出了表。
原因是导入文件(或转储文件)包含视图定义,如下所示:
/*!50001 DROP TABLE IF EXISTS `view_myview`*/;
/*!50001 DROP VIEW IF EXISTS `view_myview`*/;
/*!50001 SET @saved_cs_client = @@character_set_client */;
/*!50001 SET @saved_cs_results = @@character_set_results */;
/*!50001 SET @saved_col_connection = @@collation_connection */;
/*!50001 SET character_set_client = latin1 */;
/*!50001 SET character_set_results = latin1 */;
/*!50001 SET collation_connection = latin1_swedish_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */
/*!50001 VIEW `view_myview` AS select `p`.`id` AS blabla */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
从文件中删除视图定义,再次执行导入,并在phpmyadmin中显示表。当然缺乏观点,但当时我并不需要。
我认为真正的原因与定义行有关:
/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */
Same issue described here。