Linuchs: mysql.proc. The table is probably corrupted

Moin,

ich möchte Termine aus Nachbarorten vom Debian-Server holen, die jetzt oder später starten und im Umkreis vom 20 km liegen.

Die trm1.uhr kann NULL sein, deshalb fehlte vermutlich ein Termin

AND  CONCAT( trm1.tag, ' ', trm1.uhr ) >= NOW()

in der Trefferliste. Habe verschiedene Sachen mit IS NULL ausprobiert und dann kam dies:

Meldung 17.03.2023 21:17:53  

1728: Cannot load from mysql.proc. The table is probably corrupted

# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Termine *ORT und Umkreis lesen
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SELECT
 SQL_CALC_FOUND_ROWS
 trm1.id                    TID
,DATE_FORMAT(trm1.tag,'%w') wt
,trm1.tag
,trm1.uhr
,trm1.titel
,ort1.id                    ORT
,ort1.land_kz
,ort1.plz
,ort1.name  ort_name
,ort1.bundesland
,adr1.id                    VIP
,adr1.firma1
,ROUND( 6366.2 * ACOS( SIN(0.90690100460429) *SIN(RADIANS(ort1.geo_breite)) +COS(0.90690100460429) *COS(RADIANS(ort1.geo_breite)) *COS(RADIANS(ort1.geo_laenge) -0.16587033252301 ))) distanz_km
FROM        (bia_termine trm1
            ,bia_orte ort1 )
LEFT JOIN   bia_adressen adr1
ON          adr1.id         = trm1.adress_id

WHERE       trm1.owner_id   = '1'
AND         ort1.id         = trm1.ort_id
AND         ort1.id IN (7012,7014,7018,7021,7027,7028,7029,7030,7031,7120,7122,7123,7128,7129,7131,7163,7454,7560,7561,7562,7563,7564,7565,7566,7567,7568,7569,7570,7571,13891,14055)
AND         trm1.tag       >= CUR_DATE()
AND        (trm1.uhr IS NULL OR trm1.uhr  >= CUR_TIME())
AND         trm1.intern_kz  =   0
AND         trm1.abgesagt   =  '0'

ORDER BY  trm1.tag, trm1.uhr
LIMIT 0,5

Die Tabelle kenne ich nicht, wie ist der Fehler zu beseitigen? Habe bei stackoverflw altes Zeug gefunden, keine Ahnung, ob das für meine Version zutrifft.

MySQL-Vers.=[10.1.37-MariaDB-0+deb9u1], [] PHP-Vers.=[5.6.40-0+deb8u1]

Gruß, Linuchs

  1. Habe bei stackoverflw altes Zeug gefunden, keine Ahnung, ob das für meine Version zutrifft.

    Und mit welchem Ergebnis hast Du

    sudo mysql_upgrade # auf (Debian,Ubuntu,…)
    mysql_upgrade -u root -p # (andere OS)
    

    versucht?

    1. sudo: mysql_upgrade: command not found

      1. sudo: mysql_upgrade: command not found

        Hm. Das führt man auf dem Rechner aus, auf dem der Server installiert ist.

        Ein Hinweis zu OS, installierter Version oder gar einer Ausgabe wie

        apt list mysql* mariadb* | grep -i 'install'
        

        hilft mir und dann Dir, also uns sicherlich weiter.

        Dann wären da noch:

        • which mysql_upgrade
        • find / -name mysql_upgrade 2> /dev/null
        • sudo echo $PATH
        1. Das führt man auf dem Rechner aus, auf dem der Server installiert ist.

          Sorry, natürlich. War nicht ganz bei der Sache.

          xxxxx:~# apt list mysql* mariadb* | grep -i 'install'

          WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

          mysql-common/oldstable,now 5.8+1.0.2 all [Installiert,automatisch] mysql-server/oldstable,now 5.5.9999+default amd64 [installiert] osmer:~#

          1. Aha.

            mysql-common/oldstable,now 5.8+1.0.2 all [Installiert,automatisch]
            mysql-server/oldstable,now 5.5.9999+default amd64 [installiert] 
            

            In dem Fall ist wohl myisamchk das Werkzeug:

            Literatur: https://dev.mysql.com/doc/refman/8.0/en/myisamchk.html

            (Von den älteren Versionsnummern wird weitergeleitet.)

            Es kann aber auch sein, dass sich ein moderner Client und die betagte Datenbank nicht mehr wirklich gut verstehen. So wie Enkel und echt alte Omas.

            Der bessere Rat ist also:

            1. Mach einen Dump und installiere eine modernere Version, lese den Dump ggf.(sic!) wieder ein.

            2. („Und, ach“) Vergiss nicht, auch ein binäres Backup von /var/lib/mysql zu machen...)

            3. Dein PHP braucht auch mal ein Update. (Ich weiß, das wird viel Arbeit machen...)

            4. Du hast im ersten Posting „MySQL-Vers.=[10.1.37-MariaDB-0+deb9u1]“ angegeben. Ist das der Client? Warum erwartest Du, dass der mit mysql-server 5.5.9999 reibungslos zusammenarbeitet?

            1. Du hast im ersten Posting „MySQL-Vers.=[10.1.37-MariaDB-0+deb9u1]“ angegeben. Ist das der Client?

              Das ist der Server. Der Client arbeitet nur mit einem Web-Browser.

              1. Du hast im ersten Posting „MySQL-Vers.=[10.1.37-MariaDB-0+deb9u1]“ angegeben. Ist das der Client?

                Das ist der Server. Der Client arbeitet nur mit einem Web-Browser.

                Welcher Client wo und wie auch immer arbeiten sollte: der Web-Browser direkt wird es hoffentlich nicht sein ;-)

  2. Moin,

    habe die DB gesichert, wollte sie umbennen, um die Sicherung zurückzuspielen.

    Die Berechtigung des Umbennenes habe ich nicht als derjenige, der sonst bei PhpMyAdmin arbeitet.

    PhpMyAdmin weist die Anmeldung als root zurück.

    Wie kann ich die Datenbank neu aufbauen? Sie von der Sicherung auf einen anderen DB-Namen zu importieren, ist nicht vorgesehen?

    Ich sehe gerade, ist technisch gar nicht möglich 11 MB zu übertragen

    Bin Anwendungsprogrammierer und wenig dazu geeignet in den Eingeweiden eines Systems zu wühlen. Habe eine Kette von unbekannten Hindernissen vor mir.

    Gruß, Linuchs

    1. Hast Du einen SSH-Zugang zum Webserver?

      Wenn ja, dann ist auf diesem wohl auch mysqldump installiert.

      1. Hast Du einen SSH-Zugang zum Webserver?

        Wenn ja, dann ist auf diesem wohl auch mysqldump installiert.

        Ach halt. Den Dump hast Du ja schon. Offenbar auf einem Webclient zu Hause und kannst diesen Dump nicht hochladen, weil die Beschränkung von PHP für Uploads greift.

        Lösung: Übertrage den Dump mit de von Dir genutzten Filezilla auf dem Webserver und lese ihn mit

        mysql -h ... -u ... -p DATENBANK < DATEI.sql 
        

        wieder ein.

        Normalerweise (sic!) stehen im Dump Befehle, welche die Tabellen löschen und neu erzeugen. Aber das ist im PHPAdmin mit ein paar Klicks abwählbar - und keiner weiß, was Du gemacht hast. Und Du musst den Dump nachlesen um zu sehen, was der macht. (Z.B. eben [ Datenbanken, Tabellen ] löschen und neu anlegen?)

        Wenn Du für das Einlesen des Dumps eine neue Datenbank anlegen willst brauchst Du den root-Zugang. Wie und ob der wohl zu bewerkstelligen ist, das ist von vielen Umständen abhängig. Frag also im Zweifelsfall den Hoster, dem muss man nicht alles einzeln aus der Nase ziehen, denn der weiß nämlich schon viel über Dein System, Deinen Vertrag und so weiter.

        Bin Anwendungsprogrammierer

        Nein. Ich sag jetzt nichts dazu.