Heidisql: MySQL 8.0 - مشكلة طرق عرض التصدير

تم إنشاؤها على ٢٣ سبتمبر ٢٠١٩  ·  3تعليقات  ·  مصدر: HeidiSQL/HeidiSQL

خطوات إعادة إنتاج هذه المشكلة

مرحبًا ، هناك مشكلة في تصدير قاعدة بيانات إلى أخرى. باستخدام Mysql 8.0 و Heidi 10.2.0

  1. حدد قاعدة البيانات المراد تصديرها: "تصدير قاعدة البيانات كـ SQL"
  2. حدد الجدول: إفلات وإنشاء
  3. حدد البيانات: حذف + إدراج (اقتطاع البيانات الموجودة)
  4. حدد الإخراج: Dabase
  5. انقر فوق تصدير
  6. يظهر لي الخطأ "خطأ SQL 1347: xxxx ليس عرض" في طريقة العرض

السلوك الحالي


تحصل طرق العرض على خطأ عند تصدير "خطأ SQL 1347: xxxx ليس عرضًا"
لقد تم إنشاؤها كجداول.

سلوك متوقع


لم يتم تصدير طرق العرض كـ "طرق عرض"

حل ممكن

بيئة

  • إصدار HeidiSQL: 10.2.0.5695
  • نظام وإصدار قاعدة البيانات: Mysql الإصدار: 8.0.17 - ترتيب قاعدة البيانات: utf8mb4_0900_ai_ci
  • نظام التشغيل: Windows 10

الصورة 1
Screenshot_2
الصورة 2
Screenshot_3
صورة 3
Screenshot_4

bug confirmed nettype-mysql

التعليق الأكثر فائدة

أعتقد أن جذر هذه المشكلة ليس DROP VIEW IF EXISTS xyz ، لكن HeidiSQL يقوم بإنشاء طرق العرض كجداول عند نقل الأشياء من قاعدة بيانات إلى أخرى.

حاولت القيام بذلك على قاعدة بيانات فارغة تمامًا وأنشأت HeidiSQL وجهات النظر كجداول والتي تسببت بدورها في حدوث هذه المشكلة.

ال 3 كومينتر

المشكلة في MySQL 8 ، السلوك المتغير لـ DROP VIEW xyz . تم وصف السلوك الجديد هنا: https://dev.mysql.com/doc/refman/8.0/en/drop-view.html
على الرغم من أن المستندات توضح بوضوح عند استخدام DROP VIEW IF EXISTS xyz ، فإن الملاحظة فقط ترجع ، وليس خطأ. تقوم HeidiSQL بتشغيل الاستعلام بسبب مربع الاختيار الأيسر المحدد (إسقاط الجداول) ، وتنشيطه باستخدام عبارة IF EXISTS ، والتي يجب أن تتجنب الخطأ. من الواضح أنه لا يزال يتم إرجاعه مع وجود خطأ إذا كان xyz موجودًا كجدول. لست متأكدًا مما إذا كان هذا خطأ في MySQL أو إذا كان ذلك عن قصد. ومع ذلك ، فإن المستندات غير مكتملة ، وليس لدي أي فكرة عن حل بديل.

أعتقد أن جذر هذه المشكلة ليس DROP VIEW IF EXISTS xyz ، لكن HeidiSQL يقوم بإنشاء طرق العرض كجداول عند نقل الأشياء من قاعدة بيانات إلى أخرى.

حاولت القيام بذلك على قاعدة بيانات فارغة تمامًا وأنشأت HeidiSQL وجهات النظر كجداول والتي تسببت بدورها في حدوث هذه المشكلة.

الحل المحتمل هو أن تفعل الشيء نفسه الذي تفعله mysqldump لحل هذا:

--
-- Temporary view structure for view `xyz`
--

DROP TABLE IF EXISTS `xyz`;
/*!50001 DROP VIEW IF EXISTS `xyz`*/;
SET <strong i="6">@saved_cs_client</strong>     = @@character_set_client;
/*!50503 SET character_set_client = utf8mb4 */;
/*!50001 CREATE VIEW `xyz` AS SELECT 
 1 AS `x`,
 1 AS `y`,
 1 AS `z`*/;
SET character_set_client = @saved_cs_client;

-- Rest of the dump...

--
-- Final view structure for view `xyz`
--

/*!50001 DROP VIEW IF EXISTS `xyz`*/;
/*!50001 SET <strong i="7">@saved_cs_client</strong>          = @<strong i="8">@character_set_client</strong> */;
/*!50001 SET <strong i="9">@saved_cs_results</strong>         = @<strong i="10">@character_set_results</strong> */;
/*!50001 SET <strong i="11">@saved_col_connection</strong>     = @<strong i="12">@collation_connection</strong> */;
/*!50001 SET character_set_client      = utf8 */;
/*!50001 SET character_set_results     = utf8 */;
/*!50001 SET collation_connection      = utf8_general_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`john.doe`@`%` SQL SECURITY DEFINER */
/*!50001 VIEW `xyz` AS SELECT x, y, z FROM tbl */;
/*!50001 SET character_set_client      = <strong i="13">@saved_cs_client</strong> */;
/*!50001 SET character_set_results     = <strong i="14">@saved_cs_results</strong> */;
/*!50001 SET collation_connection      = <strong i="15">@saved_col_connection</strong> */;
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات