Hallo Leute,
Ich bin noch Anfänger in Sachen Webserver, OC, Apache, MySQL,PHP, habe mich grad erst reingelesen. Da ich keine Antwort im ownCloud-Forum erhalte, frage ich mal hier. Seit gestern bekomme ich keinen Zugriff mehr auf meine ownCloud, weder über 'localhost/owncloud' am Server, noch über die IP oder Domain. Schalte ich den Wartungsmodus ab ('maintenance' ⇒ false), bekomme ich im Browser die Meldung
1 2 3 4 5 6 | ownCloud wird auf Version 9.1.5 aktualisiert Stellen Sie vor dem Fortsetzen bitte sicher, dass die Datenbank, der Konfigurationsordner und der Datenordner gesichert wurden. Aktualisierung starten Zur Vermeidung von Zeitüberschreitungen bei größeren Installationen können Sie stattdessen den folgenden Befehl in Ihrem Installationsverzeichnis ausführen: ./occ upgrade |
Alle Update-Möglichkeiten (Schaltfläche, Befehl, Manuell) schlagen fehl Ich komme nicht über die o. g. Meldung hinaus. Kann ich diese überspringen, umgehen, abbrechen?
Schritte zum Reproduzieren
1. ownCloud über localhost/owncloud aufgerufen
2. Wartungsseite erscheint → Wartungsmeldung abgeschaltet
3. Aktualisierungsseite erscheint → Aktualisierung gestartet
4. und so weiter...
Erwartetes Verhalten
Update sollte passieren...
Aktuelles Verhalten
Update hängt bei 'oc_filecache 5/24 ===⇒ 20%' und bricht nach langer Zeit ab:
Meldung:
1 2 3 4 5 6 7 8 9 10 11 12 | sudo -u www-data /var/www/owncloud/occ upgrade ownCloud or one of the apps require upgrade - only a limited number of commands are available You may use your browser or the occ upgrade command to do the upgrade Set log level to debug Checking whether the database schema can be updated (this can take a long time depending on the database size) oc_filecache 5/24 [=====>----------------------] 20%Doctrine\DBAL\Exception\DriverException: An exception occurred while executing 'SET unique_checks=1': SQLSTATE[HY000]: General error: 2006 MySQL server has gone away Update failed Maintenance mode is kept active Reset log level |
Server-Konfiguration
Betriebssystem: Ubuntu 16.04 LTS
Webserver-Typ: Apache 2
Datenbank-Typ: mysql Ver 14.14 Distrib 5.7.17
PHP-Version: PHP 7.0.15-0ubuntu0.16.04.4 (cli) ( NTS )
ownCloud-Version: 9.1.5.2
Von einer älteren ownCloud-Version aktualisiert oder neu installiert?: nach manuellen Update
Sonderkonfigurationen (external storage, external authentication, reverse proxy, server-side-encryption): external storage (mehrere Ordner auf dem Server, 1&1 Cloud per OC-integrierten WebDAV)
ownCloud log (data/owncloud.log)
1 2 3 4 5 6 7 8 | {"reqId":"Zy9n41lJJnAau6BATR1M","remoteAddr":"","app":"PHP","message":"Use of undefined constant maintenance - assumed 'maintenance' at \/var\/www\/owncloud\/config\/config.php#24","level":3,"time":"2017-04-22T19:51:07+00:00","method":"--","url":"--","user":"--"} {"reqId":"JkFmgFxR\/xeRyDOJviz2","remoteAddr":"","app":"core","message":"starting upgrade from 9.1.4.2 to 9.1.5.2","level":0,"time":"2017-04-22T19:51:26+00:00","method":"--","url":"--","user":"--"} {"reqId":"O90oqMP4LrK4sbNKdLhA","remoteAddr":"","app":"core","message":"starting upgrade from 9.1.4.2 to 9.1.5.2","level":0,"time":"2017-04-22T19:52:27+00:00","method":"--","url":"--","user":"--"} {"reqId":"svuecAwkqu2WblCRmL5x","remoteAddr":"","app":"core","message":"starting upgrade from 9.1.4.2 to 9.1.5.2","level":0,"time":"2017-04-22T22:28:43+00:00","method":"--","url":"--","user":"--"} {"reqId":"svuecAwkqu2WblCRmL5x","remoteAddr":"","app":"PHP","message":"PDO::exec(): MySQL server has gone away at \/var\/www\/owncloud\/3rdparty\/doctrine\/dbal\/lib\/Doctrine\/DBAL\/Driver\/PDOConnection.php#57","level":3,"time":"2017-04-22T22:57:28+00:00","method":"--","url":"--","user":"--"} {"reqId":"svuecAwkqu2WblCRmL5x","remoteAddr":"","app":"PHP","message":"PDO::exec(): Error reading result set's header at \/var\/www\/owncloud\/3rdparty\/doctrine\/dbal\/lib\/Doctrine\/DBAL\/Driver\/PDOConnection.php#57","level":3,"time":"2017-04-22T22:57:28+00:00","method":"--","url":"--","user":"--"} {"reqId":"svuecAwkqu2WblCRmL5x","remoteAddr":"","app":"core","message":"Simulated database structure update failed (PDOException: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away in \/var\/www\/owncloud\/3rdparty\/doctrine\/dbal\/lib\/Doctrine\/DBAL\/Driver\/PDOConnection.php:57\nStack trace:\n#0 \/var\/www\/owncloud\/3rdparty\/doctrine\/dbal\/lib\/Doctrine\/DBAL\/Driver\/PDOConnection.php(57): PDO->exec('SET unique_chec...')\n#1 \/var\/www\/owncloud\/3rdparty\/doctrine\/dbal\/lib\/Doctrine\/DBAL\/Connection.php(1025): Doctrine\\DBAL\\Driver\\PDOConnection->exec('SET unique_chec...')\n#2 \/var\/www\/owncloud\/lib\/private\/DB\/MySQLMigrator.php(67): Doctrine\\DBAL\\Connection->exec('SET unique_chec...')\n#3 \/var\/www\/owncloud\/lib\/private\/DB\/Migrator.php(127): OC\\DB\\MySQLMigrator->checkTableMigrate(Object(Doctrine\\DBAL\\Schema\\Table))\n#4 \/var\/www\/owncloud\/lib\/private\/DB\/MDB2SchemaManager.php(130): OC\\DB\\Migrator->checkMigrate(Object(Doctrine\\DBAL\\Schema\\Schema))\n#5 \/var\/www\/owncloud\/lib\/private\/legacy\/db.php(202): OC\\DB\\MDB2SchemaManager->simulateUpdateDbFromStructure('\/var\/www\/ownclo...')\n#6 \/var\/www\/owncloud\/lib\/private\/Updater.php(288): OC_DB::simulateUpdateDbFromStructure('\/var\/www\/ownclo...')\n#7 \/var\/www\/owncloud\/lib\/private\/Updater.php(232): OC\\Updater->checkCoreUpgrade()\n#8 \/var\/www\/owncloud\/lib\/private\/Updater.php(150): OC\\Updater->doUpgrade('9.1.5.2', '9.1.4.2')\n#9 \/var\/www\/owncloud\/core\/Command\/Upgrade.php(290): OC\\Updater->upgrade()\n#10 \/var\/www\/owncloud\/3rdparty\/symfony\/console\/Command\/Command.php(259): OC\\Core\\Command\\Upgrade->execute(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))\n#11 \/var\/www\/owncloud\/3rdparty\/symfony\/console\/Application.php(844): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))\n#12 \/var\/www\/owncloud\/3rdparty\/symfony\/console\/Application.php(192): Symfony\\Component\\Console\\Application->doRunCommand(Object(OC\\Core\\Command\\Upgrade), Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))\n#13 \/var\/www\/owncloud\/3rdparty\/symfony\/console\/Application.php(123): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))\n#14 \/var\/www\/owncloud\/lib\/private\/Console\/Application.php(146): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))\n#15 \/var\/www\/owncloud\/console.php(102): OC\\Console\\Application->run()\n#16 \/var\/www\/owncloud\/occ(11): require_once('\/var\/www\/ownclo...')\n#17 {main}\n\nNext Doctrine\\DBAL\\Driver\\PDOException: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away in \/var\/www\/owncloud\/3rdparty\/doctrine\/dbal\/lib\/Doctrine\/DBAL\/Driver\/PDOConnection.php:59\nStack trace:\n#0 \/var\/www\/owncloud\/3rdparty\/doctrine\/dbal\/lib\/Doctrine\/DBAL\/Connection.php(1025): Doctrine\\DBAL\\Driver\\PDOConnection->exec('SET unique_chec...')\n#1 \/var\/www\/owncloud\/lib\/private\/DB\/MySQLMigrator.php(67): Doctrine\\DBAL\\Connection->exec('SET unique_chec...')\n#2 \/var\/www\/owncloud\/lib\/private\/DB\/Migrator.php(127): OC\\DB\\MySQLMigrator->checkTableMigrate(Object(Doctrine\\DBAL\\Schema\\Table))\n#3 \/var\/www\/owncloud\/lib\/private\/DB\/MDB2SchemaManager.php(130): OC\\DB\\Migrator->checkMigrate(Object(Doctrine\\DBAL\\Schema\\Schema))\n#4 \/var\/www\/owncloud\/lib\/private\/legacy\/db.php(202): OC\\DB\\MDB2SchemaManager->simulateUpdateDbFromStructure('\/var\/www\/ownclo...')\n#5 \/var\/www\/owncloud\/lib\/private\/Updater.php(288): OC_DB::simulateUpdateDbFromStructure('\/var\/www\/ownclo...')\n#6 \/var\/www\/owncloud\/lib\/private\/Updater.php(232): OC\\Updater->checkCoreUpgrade()\n#7 \/var\/www\/owncloud\/lib\/private\/Updater.php(150): OC\\Updater->doUpgrade('9.1.5.2', '9.1.4.2')\n#8 \/var\/www\/owncloud\/core\/Command\/Upgrade.php(290): OC\\Updater->upgrade()\n#9 \/var\/www\/owncloud\/3rdparty\/symfony\/console\/Command\/Command.php(259): OC\\Core\\Command\\Upgrade->execute(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))\n#10 \/var\/www\/owncloud\/3rdparty\/symfony\/console\/Application.php(844): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))\n#11 \/var\/www\/owncloud\/3rdparty\/symfony\/console\/Application.php(192): Symfony\\Component\\Console\\Application->doRunCommand(Object(OC\\Core\\Command\\Upgrade), Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))\n#12 \/var\/www\/owncloud\/3rdparty\/symfony\/console\/Application.php(123): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))\n#13 \/var\/www\/owncloud\/lib\/private\/Console\/Application.php(146): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))\n#14 \/var\/www\/owncloud\/console.php(102): OC\\Console\\Application->run()\n#15 \/var\/www\/owncloud\/occ(11): require_once('\/var\/www\/ownclo...')\n#16 {main}\n\nNext Doctrine\\DBAL\\Exception\\DriverException: An exception occurred while executing 'SET unique_checks=1':\n\nSQLSTATE[HY000]: General error: 2006 MySQL server has gone away in \/var\/www\/owncloud\/3rdparty\/doctrine\/dbal\/lib\/Doctrine\/DBAL\/Driver\/AbstractMySQLDriver.php:115\nStack trace:\n#0 \/var\/www\/owncloud\/3rdparty\/doctrine\/dbal\/lib\/Doctrine\/DBAL\/DBALException.php(116): Doctrine\\DBAL\\Driver\\AbstractMySQLDriver->convertException('An exception oc...', Object(Doctrine\\DBAL\\Driver\\PDOException))\n#1 \/var\/www\/owncloud\/3rdparty\/doctrine\/dbal\/lib\/Doctrine\/DBAL\/Connection.php(1027): Doctrine\\DBAL\\DBALException::driverExceptionDuringQuery(Object(Doctrine\\DBAL\\Driver\\PDOMySql\\Driver), Object(Doctrine\\DBAL\\Driver\\PDOException), 'SET unique_chec...')\n#2 \/var\/www\/owncloud\/lib\/private\/DB\/MySQLMigrator.php(67): Doctrine\\DBAL\\Connection->exec('SET unique_chec...')\n#3 \/var\/www\/owncloud\/lib\/private\/DB\/Migrator.php(127): OC\\DB\\MySQLMigrator->checkTableMigrate(Object(Doctrine\\DBAL\\Schema\\Table))\n#4 \/var\/www\/owncloud\/lib\/private\/DB\/MDB2SchemaManager.php(130): OC\\DB\\Migrator->checkMigrate(Object(Doctrine\\DBAL\\Schema\\Schema))\n#5 \/var\/www\/owncloud\/lib\/private\/legacy\/db.php(202): OC\\DB\\MDB2SchemaManager->simulateUpdateDbFromStructure('\/var\/www\/ownclo...')\n#6 \/var\/www\/owncloud\/lib\/private\/Updater.php(288): OC_DB::simulateUpdateDbFromStructure('\/var\/www\/ownclo...')\n#7 \/var\/www\/owncloud\/lib\/private\/Updater.php(232): OC\\Updater->checkCoreUpgrade()\n#8 \/var\/www\/owncloud\/lib\/private\/Updater.php(150): OC\\Updater->doUpgrade('9.1.5.2', '9.1.4.2')\n#9 \/var\/www\/owncloud\/core\/Command\/Upgrade.php(290): OC\\Updater->upgrade()\n#10 \/var\/www\/owncloud\/3rdparty\/symfony\/console\/Command\/Command.php(259): OC\\Core\\Command\\Upgrade->execute(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))\n#11 \/var\/www\/owncloud\/3rdparty\/symfony\/console\/Application.php(844): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))\n#12 \/var\/www\/owncloud\/3rdparty\/symfony\/console\/Application.php(192): Symfony\\Component\\Console\\Application->doRunCommand(Object(OC\\Core\\Command\\Upgrade), Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))\n#13 \/var\/www\/owncloud\/3rdparty\/symfony\/console\/Application.php(123): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))\n#14 \/var\/www\/owncloud\/lib\/private\/Console\/Application.php(146): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))\n#15 \/var\/www\/owncloud\/console.php(102): OC\\Console\\Application->run()\n#16 \/var\/www\/owncloud\/occ(11): require_once('\/var\/www\/ownclo...')\n#17 {main})","level":4,"time":"2017-04-22T22:57:28+00:00","method":"--","url":"--","user":"--"} {"reqId":"svuecAwkqu2WblCRmL5x","remoteAddr":"","app":"core","message":"Exception: {\"Exception\":\"Doctrine\\\\DBAL\\\\Exception\\\\DriverException\",\"Message\":\"An exception occurred while executing 'SET unique_checks=1':\\n\\nSQLSTATE[HY000]: General error: 2006 MySQL server has gone away\",\"Code\":0,\"Trace\":\"#0 \\\/var\\\/www\\\/owncloud\\\/3rdparty\\\/doctrine\\\/dbal\\\/lib\\\/Doctrine\\\/DBAL\\\/DBALException.php(116): Doctrine\\\\DBAL\\\\Driver\\\\AbstractMySQLDriver->convertException('An exception oc...', Object(Doctrine\\\\DBAL\\\\Driver\\\\PDOException))\\n#1 \\\/var\\\/www\\\/owncloud\\\/3rdparty\\\/doctrine\\\/dbal\\\/lib\\\/Doctrine\\\/DBAL\\\/Connection.php(1027): Doctrine\\\\DBAL\\\\DBALException::driverExceptionDuringQuery(Object(Doctrine\\\\DBAL\\\\Driver\\\\PDOMySql\\\\Driver), Object(Doctrine\\\\DBAL\\\\Driver\\\\PDOException), 'SET unique_chec...')\\n#2 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/DB\\\/MySQLMigrator.php(67): Doctrine\\\\DBAL\\\\Connection->exec('SET unique_chec...')\\n#3 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/DB\\\/Migrator.php(127): OC\\\\DB\\\\MySQLMigrator->checkTableMigrate(Object(Doctrine\\\\DBAL\\\\Schema\\\\Table))\\n#4 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/DB\\\/MDB2SchemaManager.php(130): OC\\\\DB\\\\Migrator->checkMigrate(Object(Doctrine\\\\DBAL\\\\Schema\\\\Schema))\\n#5 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/legacy\\\/db.php(202): OC\\\\DB\\\\MDB2SchemaManager->simulateUpdateDbFromStructure('\\\/var\\\/www\\\/ownclo...')\\n#6 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/Updater.php(288): OC_DB::simulateUpdateDbFromStructure('\\\/var\\\/www\\\/ownclo...')\\n#7 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/Updater.php(232): OC\\\\Updater->checkCoreUpgrade()\\n#8 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/Updater.php(150): OC\\\\Updater->doUpgrade('9.1.5.2', '9.1.4.2')\\n#9 \\\/var\\\/www\\\/owncloud\\\/core\\\/Command\\\/Upgrade.php(290): OC\\\\Updater->upgrade()\\n#10 \\\/var\\\/www\\\/owncloud\\\/3rdparty\\\/symfony\\\/console\\\/Command\\\/Command.php(259): OC\\\\Core\\\\Command\\\\Upgrade->execute(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\\n#11 \\\/var\\\/www\\\/owncloud\\\/3rdparty\\\/symfony\\\/console\\\/Application.php(844): Symfony\\\\Component\\\\Console\\\\Command\\\\Command->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\\n#12 \\\/var\\\/www\\\/owncloud\\\/3rdparty\\\/symfony\\\/console\\\/Application.php(192): Symfony\\\\Component\\\\Console\\\\Application->doRunCommand(Object(OC\\\\Core\\\\Command\\\\Upgrade), Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\\n#13 \\\/var\\\/www\\\/owncloud\\\/3rdparty\\\/symfony\\\/console\\\/Application.php(123): Symfony\\\\Component\\\\Console\\\\Application->doRun(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\\n#14 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/Console\\\/Application.php(146): Symfony\\\\Component\\\\Console\\\\Application->run(Object(Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput), Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\\n#15 \\\/var\\\/www\\\/owncloud\\\/console.php(102): OC\\\\Console\\\\Application->run()\\n#16 \\\/var\\\/www\\\/owncloud\\\/occ(11): require_once('\\\/var\\\/www\\\/ownclo...')\\n#17 {main}\",\"File\":\"\\\/var\\\/www\\\/owncloud\\\/3rdparty\\\/doctrine\\\/dbal\\\/lib\\\/Doctrine\\\/DBAL\\\/Driver\\\/AbstractMySQLDriver.php\",\"Line\":115}","level":3,"time":"2017-04-22T22:57:28+00:00","method":"--","url":"--","user":"--"} |
apache2/error.log
1 2 3 4 5 6 7 8 9 10 11 | [Sun Apr 23 00:28:05.739907 2017] [mpm_prefork:notice] [pid 2986] AH00163: Apache/2.4.18 (Ubuntu) configured -- resuming normal operations [Sun Apr 23 00:28:05.739935 2017] [core:notice] [pid 2986] AH00094: Command line: '/usr/sbin/apache2' [Sun Apr 23 10:00:08.947013 2017] [mpm_prefork:notice] [pid 2986] AH00169: caught SIGTERM, shutting down [Sun Apr 23 10:01:23.836996 2017] [mpm_prefork:notice] [pid 1258] AH00163: Apache/2.4.18 (Ubuntu) configured -- resuming normal operations [Sun Apr 23 10:01:23.859394 2017] [core:notice] [pid 1258] AH00094: Command line: '/usr/sbin/apache2' [Sun Apr 23 10:19:09.091786 2017] [mpm_prefork:notice] [pid 1258] AH00169: caught SIGTERM, shutting down [Sun Apr 23 10:19:10.217247 2017] [mpm_prefork:notice] [pid 2540] AH00163: Apache/2.4.18 (Ubuntu) configured -- resuming normal operations [Sun Apr 23 10:19:10.217300 2017] [core:notice] [pid 2540] AH00094: Command line: '/usr/sbin/apache2' [Sun Apr 23 10:58:03.677419 2017] [mpm_prefork:notice] [pid 2540] AH00169: caught SIGTERM, shutting down [Sun Apr 23 11:00:36.668269 2017] [mpm_prefork:notice] [pid 1241] AH00163: Apache/2.4.18 (Ubuntu) configured -- resuming normal operations [Sun Apr 23 11:00:36.946129 2017] [core:notice] [pid 1241] AH00094: Command line: '/usr/sbin/apache2' |
Integrity status für oC9+
1 2 3 | Logge Dich als Admin in Deine ownCloud Instanz ein, öffne http://example.com/index.php/settings/integrity/failed und kopiere das Ergebnis hier. |
Ich kann mich nicht einloggen, da ich nicht über die Aktualisierungsseite hinaus komme.
Weiß jemand Rat? Hängt das vielleicht an der Größe der oc_filecache (ext. HD=620GB von 1TB, 1&1-Webdav=800GB von 2TB)? Was kann ich tun?
Danke und guten Gruß 😉
McG