mysql.proc. The table is probably corrupted
Linuchs
- datenbank
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
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?
sudo: mysql_upgrade: command not found
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
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:~#
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:
Mach einen Dump und installiere eine modernere Version, lese den Dump ggf.(sic!) wieder ein.
(„Und, ach“) Vergiss nicht, auch ein binäres Backup von /var/lib/mysql
zu machen...)
Dein PHP braucht auch mal ein Update. (Ich weiß, das wird viel Arbeit machen...)
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?
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.
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 ;-)
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
Hast Du einen SSH-Zugang zum Webserver?
Wenn ja, dann ist auf diesem wohl auch mysqldump installiert.
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.