سؤال

والتعليمة البرمجية التالية يعطي خطأ تجزئة على السطر الأخير

require 'rubygems'
gem 'mysql'
gem 'dbi'
require 'dbi'
require 'mysql'

dsn = "DBI:Mysql:DATABASE:www.HOST.net" # redacted
dbh = DBI.connect(dsn, "USERNAME", "PASSWORD") # redacted

sth = dbh.execute("select  * from TABLE where numeric_value is not null limit 10;") # redacted

وانها بالتأكيد السطر الأخير الذي يسبب المشكلة - بيان الطباعة على السطر التالي لا الحصول على تنفيذها من أي وقت مضى

لا أحد يعرف لماذا تفشل مثل هذه محاولة بسيطة؟

وأنا على التوالي هذا على ويندوز، في حالة أن يحدث فرقا.

هل كانت مفيدة؟

المحلول

وهذا يمكن أن يكون أي عدد من الأمور، من إصدار DBI، ماي الأحجار الكريمة، الإصدار الخلية، والإصدار روبي.

ومما يؤسف له روبي ليس مواطنا من الدرجة الأولى على النوافذ، ولا هي كافة تكوينات اختبارها بشكل مكثف على ذلك.

أولا تمكين التصحيح على VM لإنتاج هذه المسألة مع مزيد من المعلومات حول مكان والسبب في segfault يحدث. تمرير الخيار -d على VM. من هناك سيكون لديك نأمل المزيد من المعلومات إلى أين للبحث عن حل.

وأنا أقترح، والتحقق من مستوى التصحيح الخاص بك من VM الخاص بك

ruby --version

وكنت أيضا فحص مستوى DBI، والخلية

  # if you are using gems
  gem list --local 

ويمكنك أيضا تبديل كيف يمكنك الوصول إلى الخلية، يستخدم أكتيفيريكورد انها كود الخاصة للاتصال الخلية، الذي يتم اختباره على نطاق أوسع. قد لا يكون أفضل حل ولكن لا ينبغي أن يستبعد ذلك.

نصائح أخرى

وأنا لا أعرف لماذا كنت الحصول على segfault في هذا القانون.

ومن الممكن أن، على سبيل المثال، إذا كنت تجاوز حدود المصفوفة، قد لا segfault في الواقع حتى محاولة لتشغيل التعليمات البرمجية أو الوصول إلى الذاكرة التي overwrote. لذلك يمكن أن يكون هناك نظام الذي يمتد لعدة أيام قبل أن خطأ التقسيم إذا كان كتب فقط في الذاكرة تمتلك العملية في المنطقة التي لم أكن "وصول كثير من الأحيان.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top