Doctrine TimeStamp Error: استيراد جداول SQL Server 2008
وكالة ويب » أخبار رقمية » Doctrine TimeStamp Error: استيراد جداول SQL Server 2008

Doctrine TimeStamp Error: استيراد جداول SQL Server 2008

كيفية استيراد جدول خادم مزود بحقل الطابع الزمني مع العقيدة؟ عندما لا تكون البرامج التعليمية هنا كافية ، فغالبًا ما يكون هناك طريقة واحدة فقط لتحقيق غاياتك ... احصل على يديك متسخة! أقترح اليوم حلاً آمل أن يتم دمجه بسرعة من قبل المجتمع المسؤول عن تطوير العقيدة ، والذي يسمح بإنشاء كيانات Symfony2 من قاعدة بيانات SQL Server التي تحتوي على حقل من النوع الطابع الزمني.

ما هو نوع الطابع الزمني؟

يبدو لي أنه من الضروري تحديد بعض المعلومات الصغيرة عن نوع الطابع الزمني. أنا لست خبيرًا في MySQL ، ولكن من المعلومات التي صادفتها ، يبدو الطابع الزمني لـ MySQL وكأنه تاريخ ، مما يسهل عملية التحويل. ومع ذلك ، فإن نفس النوع لـ SQL Server أكثر دقة في فهمه. الوثائق متوفرة على Microsoft Technet.

نوع بيانات يعرض أرقامًا ثنائية مكونة من حرف واحد يتم إنشاؤها تلقائيًا في قاعدة بيانات.
مثير للاهتمام ... وكيف أقول لـ Doctrine ألا تحوّلني؟ أقترح حلاً لتحويل المشكلة ...

ابحث عن حل "مخصص"

يمكنني بالفعل رؤية الرسائل القادمة التي تخبرني أن هناك بالفعل طريقة جاهزة تعمل. نعم! علاوة على ذلك ، فهذه مهمة Symfony2 هي التي يمكن استدعاؤها بهذه الطريقة:

مبدأ php app / console: mapping: import
تعمل هذه المهمة بشكل جيد ، ولكن كما قرأت هنا ، تعمل Doctrine لحوالي 70-80٪ من التعيينات الممكنة في قاعدة البيانات. في حالتي ، أردت تصدير مخطط جدول SQL Server (2008) ، والذي يحتوي على حقل طابع زمني مشهور. وفي الـ 20٪ المتبقية من التعيينات ، توجد بالضبط هذه الأنواع من الحقول.

سأقوم بتشغيل الأمر ومحاولة استيراد mappaqe.

1
عقيدة التطبيق / وحدة التحكم php: mapping: import—force NamespaceNameBundle xml

في حالتي ، كان علي استخدام خيارين إضافيين ، وهما:

  1. –em = "..." لتحديد المدير الكيان مسؤول عن قاعدة بيانات SQL Server الخاصة بي ؛
  2. - عامل التصفية = "جدول". أردت استخدام هذا الخيار الذي عمل مع MariaDB ولكن يبدو أنه تم تجاهله عند استخدامه مع MSSQL. هذا يسمح لك بتحديد جدول للتصدير. في حالتي ، قمت بنسخ BDD الخاص بي ، قمت بحذف الجداول التي لم تهمني وإنشاء ملف تعريف جديد لـمدير الكيان.
    وهنا يبرز الاستثناء:
1
2
[DoctrineDBALDBALException]
قاعدة بيانات غير معروفة نوع طلب الطابع الزمني ، قد لا يدعمه DoctrineDBALPlatformsSQLServer2008Platform.

من الآن فصاعدًا ، سيتعين علينا تجهيز النرد.
نوع الطابع الزمني غير مدعوم - وأعترف أنني لا أعرف حقًا نوع حقول PHP التي سيتم ربطها بها - سنخبر العقيدة مؤقتًا أنه يجب تحويل هذا النوع التاريخ والوقت.

  • انتقل إلى المجلد المشار إليه بواسطة هيكل الشجرة ، بوردوكترينيدباليباليبدوكتريندبل المنصات.
  • في هذا المجلد هي الفئات لدعم غالبية نظم إدارة قواعد البيانات الموجودة.
  • في حالتي كنت أعمل على SQL Server 2008 R2 ، لذلك قمت بتحرير الملف SQLServer2008Platform.php، ولكن لا تتردد في تحرير ملف آخر إذا كان يطابق التكوين الخاص بك.
  • سنقوم بتعديل الطريقة initializeDoctrineTypeMappings. ثابت DectrineTypeMapping يقدم المعلومات لتحويل الأنواع. أضف السطر:
    $ this-> DectrineTypeMapping ['timestamp'] = 'datetime'؛
  • إعادة تشغيل تعيين الاستيراد. تم استيراد تعيين كافة الحقول.
  • يجب أن تتذكر إزالة السطر الذي أضفته إلى الملف. إذا لم تكن متأكدًا ، فقم بإزالة جميع البائعين وإعادة تثبيتها.
  • انتقل الآن تباعا إلى الملفات التي تم إنشاؤها. يشار إلى مسار كل منها ، وبالتالي ، اتبع المؤشرات أدناه.
    • لديك الآن ما يعادل جداولك في XML.
    • احذف الأسطر التي تتوافق مع حقل نوع الطابع الزمني. بهذه الطريقة ، ستتجاهل العقيدة هذه الحقول.
    • إجراء احترازي صغير مع SQL Server هو إضافة أقواس حول كل قيمة محتواة في "عمود" به مسافة واحدة أو أكثر.
      لهذا الخط ،

      عمود SQL Server هو "معلوماتي". لا تعرف العقيدة كيفية التعامل مع المسافات باستخدام MSSQL. لذلك تحتاج إلى إضافة خطافات مثل هذا:
  • عندما يتم تصحيح ملفاتك ، نطلق إنشاء الكيان.
    1
    عقيدة التطبيق / وحدة التحكم php: التعيين: تحويل التعليقات التوضيحية ./src

قد تحتاج إلى تحديد مدير الكيانات لاستخدامه ، مثل هذا: –em = "...".

  • يمكنك الآن حذف التعيين ، أي ملفات .xml الموجودة في الموارد.
    هذا كل شيء ، لديك الآن كيانات صالحة تم إنشاؤها بواسطة Doctrine. هذا الحل ، قليلاً ... "brian fuck" ، صالح طالما أن الفريق المسؤول عن تطوير العقيدة لم يدمج حلاً قابلاً للتطبيق يسمح بدعم نوع TimeStamp محليًا داخل PHP.

حظا سعيدا ونراكم قريبا!

★ ★ ★ ★ ★