2013-04-23 5 views
12

दूषित है I 000webhost.com का उपयोग कर रहा हूं और मैं वहां phpMyAdmin का उपयोग कर रहा हूं। मुझे यह त्रुटि mysql से मिल रही है जब मैं अपनी PHP स्क्रिप्ट को शीर्षक के रूप में चलाता हूं:mysql.proc की कॉलम गिनती गलत है। अपेक्षित 20, पाया गया 16. तालिका शायद

mysql.proc की कॉलम गिनती गलत है। अपेक्षित 20, पाया गया 16.

तालिका शायद दूषित हो गई है।

क्या इसके लिए कोई समाधान है? धन्यवाद।

संपादित: यहाँ मेरी कोड

<?php 
$username="usrname"; 
$password="passwd"; 
$database="a1xxxxx_mydb"; 
$host="mysqlxx.000webhost.com"; 
mysql_connect($host,$username,$password); 
@mysql_select_db($database) or die("Unable to select database"); 
if (isset($_GET["userLatitude"]) && isset($_GET["userLongitude"])) { 

$userLatitude=$_GET['userLatitude']; 
$userLongitude=$_GET['userLongitude']; 
$result = mysql_query("SELECT locationName, (6371 * acos(cos(radians(floatval( $userLatitude))) * cos(radians(locationLatitude)) * cos(radians(locationLongitude) - radians(floatval($userLatitude))) + sin(radians(floatval($userLongitude))) * sin(radians(locationLatitude)))) AS distance 
     FROM Location HAVING distance < 2 ORDER BY distance LIMIT 0 ,20") or die(mysql_error()); 
echo $result; 

// check for empty result 
if (mysql_num_rows($result) > 0) { 
    // looping through all results 
    // products node 
    $response["Location"] = array(); 

    while ($row = mysql_fetch_array($result)) { 
    // temp user array 
    $product = array(); 
    $product["locationName"] = $row["locationName"]; 
    $product["locationInfo"] = $row["locationInfo"]; 
    $product["locationLatitude"] = $row["locationLatitude"]; 
    $product["locationLongitude"] = $row["locationLongitude"]; 
    $product["locationPic"] = $row["locationPic"]; 
    $product["city"] = $row["city"]; 



    // push single product into final response array 
    array_push($response["Location"], $product); 
} 
// success 
$response["success"] = 1; 

    // echoing JSON response 
    echo json_encode($response); 
} else { 
// no products found 
$response["success"] = 0; 
$response["message"] = "No products found"; 

// echo no users JSON 
echo json_encode($response); 
} 
} 
    else { 
    // required field is missing 
    $response["success"] = 0; 
    $response["message"] = "Required field(s) is missing"; 

    // echoing JSON response 
    echo json_encode($response); 
} 
mysql_close(); 
?> 
+0

। क्या आप एक संग्रहीत प्रक्रिया चला रहे हैं? यूडीएफ? आप जिस कोड को चलाने की कोशिश कर रहे हैं उसे दिखाने के बारे में कैसे?हम अच्छे हैं, लेकिन हम मानसिक नहीं हैं और आपके दिमाग को नहीं पढ़ सकते हैं या अपनी स्क्रीन को दूरस्थ रूप से देख सकते हैं। –

+0

ओह आप सही हैं, मैं जितनी जल्दी हो सके कोड डाल रहा हूं .मैं 000webhost.com से कनेक्ट नहीं हो सकता। मैं इसे पोस्ट करूंगा। धन्यवाद :) – user2086258

+0

http://dba.stackexchange.com/questions/956/resolving-issue-with-mysql-proc-after-upgrading-mysql-from-5-0-to-5-1 –

उत्तर

10

जब एक बुरा उन्नयन किया जाता है तो यह त्रुटि होता है। उदाहरण के लिए, ऐसा होता है यदि आप 5.0 से 5.1 तक अपग्रेड करते हैं लेकिन mysql_upgrade स्क्रिप्ट नहीं चलाते हैं; या, दुर्लभ मामलों में, शायद यह तब होता है जब आप सीधे 5.0 से 5.5 तक अपग्रेड करते हैं। (बहुत से लोग ऐसा करते हैं, लेकिन ऐसे अपडेट आधिकारिक रूप से समर्थित नहीं हैं) आप कहते हैं कि आप एक होस्टिंग सेवा का उपयोग कर रहे हैं - ठीक है, मुझे लगता है कि आपको टिकट बनाना चाहिए और समस्या के बारे में बताएं। यदि आपके पास सुपर विशेषाधिकार नहीं है, तो आप ऐसा कुछ भी नहीं कर सकते हैं। लेकिन आपको लगता है कि ठीक है, बस mysql_upgrade चलाने अगर: http://dev.mysql.com/doc/refman/5.1/en/mysql-upgrade.html

+1

'mysql_upgrade -u root -p' चल रहा है मेरे लिए मेरे डेटाबेस को तय किया। धन्यवाद। – jorisw

1

यद्यपि आप उन्नयन के लिए आवश्यकता के बारे में सही हो सकता है, कि एकमात्र कारण यह त्रुटि आती नहीं है।

निम्नलिखित एक प्रश्न है कि रिटर्न 1 पंक्ति

my $rv = $sth_indexq->fetchall_arrayref; 

निम्न त्रुटि रिपोर्ट किया गया है के साथ कहा जाता है जब:

DBD::mysql::st execute failed: Column count of mysql.proc is wrong. Expected 20, found 16. Created with MySQL 50520, now running 50528. Please use mysql_upgrade to fix this error. at 
... 

हालांकि, त्रुटि का असली कारण fetchall_arrayref का उपयोग किया गया के बजाय fetchrow_arrayref। त्रुटियों के बिना काम किया है: $ आर वी में

my $rv = $sth_indexq->fetchrow_arrayref; 

डेटा केवल 1 स्तर गहरी थी, नहीं 2

mysql_upgrade समाधान इस समस्या को हल कर सकता है, लेकिन सरल समाधान आपके डेटा को जानता है और सही पुनर्प्राप्ति कोड का उपयोग करता है।

जे। व्हाइट

+0

अगर आपने कुछ कोड लिखा है तो ctrl + k का उपयोग करके कोड के साथ हमेशा प्रारूपित करें। – Hamad

+1

"अपना डेटा जानें": सच है, लेकिन mysql.proc हमारा डेटा नहीं है (और मुझे यह नोटिस करने में कई घंटे लग गए हैं ...) –

25

मुझे यह त्रुटि भी थी। मैं

mysql_upgrade -u root -p 

इसके अलावा चलाकर यह तय,

service mysqld restart 
+0

यह स्वीकार्य उत्तर होना चाहिए। – supersan

+0

बहुत अधिक, आपने दिन बचाया! –

0

चलाकर mysql सेवा को पुनः आरंभ जब मैं डेबियन 8 (जेसी) में 5.7 करने के लिए 5.5 से mysql सर्वर अद्यतन एक ही समस्या थी। मेरे मामले में, यह ठीक काम किया जब मैं पालन कमांड निष्पादित:

mysql_upgrade --force -uroot -p 

आशा है कि यह कुछ और जानकारी उपलब्ध कराने के एक अच्छी शुरुआत होगी की मदद से आप

संबंधित मुद्दे