Page 1 of 1
MySQL - Query Error: Table 'keyhelp.databases' doesn't exist
Posted: Tue 6. Nov 2018, 03:25
by thoand
Hallo zusammen,
irgendwie hat sich meine keyhelp Installation zerlegt. Im php-error.log steht
Code: Select all
MySQL - Query Error: Table 'keyhelp.databases' doesn't exist
Ich weiß nicht wann und wie. Alle Datenbanken existieren noch, eine Tabelle "databases" gibt es in der keyhelp Datenbank jedoch nicht mehr. Was kann ich tun?
Viele Grüße,
thoand
Re: MySQL - Query Error: Table 'keyhelp.databases' doesn't exist
Posted: Tue 6. Nov 2018, 09:51
by Alexander
KeyHelp speichert Dumps der von ihm verwalteten Datenbanken im Verzeichnis
Code: Select all
/home/keyhelp/keyhelp.backup/dumps/
Hier solltest du die Dumps der letzten 7 Tage finden. Aus der keyhelp.sql.* holst du dir den Inhalt/Struktur der `databases` Tabelle und fügst ihn z.B. via phpmyadmin ein.
Re: MySQL - Query Error: Table 'keyhelp.databases' doesn't exist
Posted: Tue 6. Nov 2018, 16:03
by thoand
Hallo,
das habe ich schon geschaut, das Problem scheint länger zu bestehen und erst jetzt durch einen Neustart des Servers aufzufallen. Vorher war keyhelp noch erreichbar. Ich habe dumps bis zum 24.10., aber ein grep auf databases bringt leider nichts.
Gruß thoand
Re: MySQL - Query Error: Table 'keyhelp.databases' doesn't exist
Posted: Wed 7. Nov 2018, 10:06
by Alexander
Hallo,
ich gehe davon aus ein reguläres Backup existiert nicht?
Die Struktur der Datenbanktabelle für KeyHelp 18.1.1 ist die folgende:
Code: Select all
DROP TABLE IF EXISTS `databases`;
CREATE TABLE IF NOT EXISTS `databases` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`id_user` int(10) UNSIGNED NOT NULL,
`database_name` varchar(64) NOT NULL,
`database_username` varchar(64) NOT NULL,
`remote_hosts` text NOT NULL,
`description` varchar(255) NOT NULL,
`access_limited` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `id_user` (`id_user`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Die Datensätze müsstest du dann manuell mit den entsprechenden Werten füllen. Alle angelegten Datenbank-Benutzer lassen sich z.B. via phpMyAdmin (mit root Rechten eingeloggt) im Reiter Benutzer nachvollziehen. In dieser Tabelle aber nur die Benutzer anlegen, die durch KeyHelp angelegt wurden. Keine sonstigen Nutzer, die ggf. existieren.
id = automatisch ausfüllen lassen
id_user = die ID des KeyHelp Benutzers aus der Tabelle `users`
database_name = Name der Datenbank, lässt sich über phpMyAdmin nachvollziehen
database_username = Name des Datenbank-Benutzers, lässt sich über phpMyAdmin nachvollziehen
remote_hosts = leer lassen, wenn es sich um ganz normale lokale Datenbanken handelt; andernfalls Komma-separierte Liste von Hostnamen/IPs oder "%" für keine Einschränkung
description = Frei-Text-Feld
access_limited = auf 0 lassen, KeyHelp korrigiert es, falls nötig, später selbst
Re: MySQL - Query Error: Table 'keyhelp.databases' doesn't exist
Posted: Wed 7. Nov 2018, 12:36
by thoand
Hallo Alexander,
keines was weit genug zurück reicht. Danke für die Struktur. phpmyadmin funktioniert aktuell zwar genauso wenig (You don't have permission to access /phpmyadmin/ on this server.) aber mit mysql auf der shell sollte ich das auch hinbekommen.
Gruß thoand
Re: MySQL - Query Error: Table 'keyhelp.databases' doesn't exist
Posted: Wed 7. Nov 2018, 12:47
by thoand
Hallo Alexander,
leider verstehe ich doch nicht, wie ich da jetzt die Daten eintragen soll. Sind die einzelnen Felder zu ersetzen (also statt database_name z.B. keyhelp), oder muss ich das irgendwie zuweisen database_name = keyhelp. Ein Beispiel wäre hilfereich.
Danke und Gruß,
thoand
Re: MySQL - Query Error: Table 'keyhelp.databases' doesn't exist
Posted: Wed 7. Nov 2018, 15:25
by OlliTheDarkness
Moin,
hier mal ein Dump meiner KeyHelp Database:
Code: Select all
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Datenbank: `keyhelp`
--
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `databases`
--
CREATE TABLE `databases` (
`id` int(11) UNSIGNED NOT NULL,
`id_user` int(10) UNSIGNED NOT NULL,
`database_name` varchar(64) NOT NULL,
`database_username` varchar(64) NOT NULL,
`remote_hosts` text NOT NULL,
`description` varchar(255) NOT NULL,
`access_limited` tinyint(1) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Daten für Tabelle `databases`
--
INSERT INTO `databases` (`id`, `id_user`, `database_name`, `database_username`, `remote_hosts`, `description`, `access_limited`) VALUES
(1, 2, 'kunde_db1', 'kunde_db1', '', 'Beschreibung', 0),
(2, 2, 'kunde_db2', 'kunde_db2', '', 'Beschreibung', 0),
(5, 2, 'kunde_db3', 'kunde_db3', '', 'Beschreibung', 0),
(6, 3, 'kunde_db1', 'kunde_db1', '', 'Beschreibung', 0),
--
-- Indizes der exportierten Tabellen
--
--
-- Indizes für die Tabelle `databases`
--
ALTER TABLE `databases`
ADD PRIMARY KEY (`id`),
ADD KEY `id_user` (`id_user`);
--
-- AUTO_INCREMENT für exportierte Tabellen
--
--
-- AUTO_INCREMENT für Tabelle `databases`
--
ALTER TABLE `databases`
MODIFY `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10;
COMMIT;
Re: MySQL - Query Error: Table 'keyhelp.databases' doesn't exist
Posted: Wed 7. Nov 2018, 16:27
by Alexander
@thoand
Via Shell
Login via Shell in die Datenbank:
INFORMATIONEN SAMMELN
Eine Liste der angelegten Datenbank-Benutzer erhalten:
Code: Select all
SELECT User, Host FROM mysql.user;
Eine Liste aller Datenbanken erhalten:
Wenn die Datenbank-/Benutzernamen nach KeyHelp Namenschema vergeben wurden, heißen alle infrage kommenden Datenbanken/Benutzer wie folgt:
Zur KeyHelp Datenbank Wechseln:
Liste von KeyHelp Benutzern und deren IDs erhalten:
DATEN HINZUFÜGEN
Zur KeyHelp Datenbank Wechseln:
KeyHelp Datenbank hinzufügen:
Code: Select all
DROP TABLE IF EXISTS `databases`;
CREATE TABLE IF NOT EXISTS `databases` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`id_user` int(10) UNSIGNED NOT NULL,
`database_name` varchar(64) NOT NULL,
`database_username` varchar(64) NOT NULL,
`remote_hosts` text NOT NULL,
`description` varchar(255) NOT NULL,
`access_limited` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `id_user` (`id_user`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Einen Beispiel-Datensatz hinzufügen:
Code: Select all
INSERT INTO `databases`
SET `id_user` = '<BENUTZER ID DES BENUTZERS>',
`database_name` = '<DATENBANK NAME>',
`database_username` = '<DATENBANK BENUTZER-NAME>',
`remote_hosts` = '',
`description` = '<BELIEBIGER TEXT>',
`access_limited` = '0';
Re: MySQL - Query Error: Table 'keyhelp.databases' doesn't exist
Posted: Mon 26. Nov 2018, 09:28
by thoand
Hallo Alexander,
danke für die detaillierte Antwort. Leider komme ich erst heute dazu mich damit zu befassen und es klappt nicht so recht. Ich habe in meinem Fall folgende Daten genutzt:
Code: Select all
INSERT INTO `databases`
SET `id_user` = '2'
`database_name` = 'krichler_db1'
`database_username` = 'krichler_db1'
`remote_hosts` = ''
`description` = 'krichler Datenbank 01
Als Ergebnis erhalte ich dann untenstehende Meldung. Warum er "krichle" meldet ist mir nicht wirklich klar.
Code: Select all
MariaDB [keyhelp]> INSERT INTO `databases`
-> SET `id_user` = '2'
-> `database_name` = 'krichler_db1'
-> `database_username` = 'krichler_db1'
-> `remote_hosts` = ''
-> `description` = 'krichler Datenbank 01'
-> `access_limited` = '0';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '`database_name` = 'krichler_db1'
`database_username` = 'krichle' at line 3
MariaDB [keyhelp]>
Gruß thoand
Re: MySQL - Query Error: Table 'keyhelp.databases' doesn't exist [GELÖST]
Posted: Mon 26. Nov 2018, 09:51
by Alexander
Guten Morgen,
Sorry, ich hatte bei meinen SQL Anweisungen oben die Kommas vergessen - habe den Code oben jetzt aktualisiert.
In deinem Fall sollte das Folgende funktionieren:
Code: Select all
INSERT INTO `databases`
SET `id_user` = '2',
`database_name` = 'krichler_db1',
`database_username` = 'krichler_db1',
`remote_hosts` = '',
`description` = 'krichler Datenbank 01',
`access_limited` = '0';
Re: MySQL - Query Error: Table 'keyhelp.databases' doesn't exist
Posted: Mon 26. Nov 2018, 14:50
by thoand
Hallo Alexander,
danke so bin ich voran gekommen. Ich habe dann noch ein chmod +x -R /home/keyhelp gemacht, weil das Recht fehlte und keyhelp dadurch nicht aufrufbar war.
Viele Grüße,
thoand
Re: MySQL - Query Error: Table 'keyhelp.databases' doesn't exist
Posted: Sat 1. Dec 2018, 20:27
by thoand
Hallo,
leider scheint in der Datenbank noch mehr verloren gegangen zu sein, bei dem Versuch eine E-Mail anzulegen kommt die folgende Meldung:
Code: Select all
MySQL - Query Error: Unknown column 'email_idn' in 'field list' (1054)
Kann man irgendwie prüfen, was noch fehlt? Oder soll ich besser neu installieren und die bestehenden Daten übertragen? Gibt es einen einfachen Weg bestehende Mail-Konten zu migrieren, oder muss ich auf imapsync zurückgreifen?
Ist ein derartiges Problem schon bei jemand anders aufgetreten? Ich habe etwas Sorge, dass es sich wiederholt.
Viele Grüße,
thoand
Re: MySQL - Query Error: Table 'keyhelp.databases' doesn't exist
Posted: Sun 2. Dec 2018, 17:56
by thoand
habe den Server nun neu aufgesetzt.