Symfony Fix propel-insert-sql-Fehler Es kann keine Verbindung zum lokalen MySQL-Server hergestellt werden

Nachdem Sie Ihr Modell und den SQL-Code erstellt haben, um es darzustellen, bietet Symfony einen Mechanismus zum direkten Einfügen des SQL-Codes in Ihre konfigurierte Datenbank. Wenn Sie MySQL lokal ausführen, sollte dies für Sie ohne zusätzliche Konfiguration funktionieren. Wenn Sie MySQL auf einem anderen Server ausführen, wie dies bei Shared Web Hosting und anderen Umgebungen üblich ist, wird eine Fehlermeldung angezeigt. In der Vergangenheit habe ich den SQL-Code nur grunzen und manuell an die Datenbank gesendet, aber es gibt eine einfache Lösung, um die Dinge so zu machen, wie sie sollten.


Wenn Ihre MySQL-Instanz nicht lokal ausgeführt wird oder nicht für die Verwendung eines Sockets für die Kommunikation konfiguriert ist (oder die Socket-Datei nicht am Standardspeicherort liegt), erhalten Sie eine Fehlermeldung wie diese, wenn Sie versuchen, eine 'symfony propel-insert- SQL-Befehl:

Die Ausführung des Ziels "insert-sql" ist aus folgendem Grund fehlgeschlagen: /mnt/pear/php/symfony/vendor/propel-generator/build-propel.xml:296:1: [umwickelt: Verbindung fehlgeschlagen [Native Error: Can ' t Verbindung zum lokalen MySQL-Server über Socket '/var/run/mysqld/mysqld.sock' (2)] [Benutzerinfo: Array]]

Wenn Sie einen solchen Fehler erhalten, können Sie Ihren Groove in einem Taktzyklus töten. Die Sache ist, diesen Fehler zu erzwingen und den SQL-Code manuell auf die Datenbank anzuwenden. Wenn Sie über die korrekten Datenbankverbindungseinstellungen in config / database.yml verfügen, stellt Symfony für normale Anwendungsvorgänge eine Verbindung zur Datenbank her. Das Problem ist, dass Propel in config / propel.ini über eigene Datenbankkonfigurationsinformationen verfügt

Um dieses Problem zu beheben, müssen Sie nur die Verbindungszeichenfolge aus config / database.yml in config / propel.ini kopieren und die Einstellung 'propel.database.url' ersetzen, die den Standardwert 'mysql: // localhost /' enthält. Projektname 'wobei' Projektname 'der Name Ihres Symfony-Projekts ist.

Die 'dsn'-Zeile in der database.yml enthält die Verbindungszeichenfolge, etwa:

dsn: mysql: // benutzername: [email protected] / dbname

Lassen Sie dort den 'dsn:' - Teil und kopieren Sie die 'mysql: //….' und den Rest der Zeile und ersetzen Sie die Verbindungszeichenfolge in der Zeile config / propel.ini, die mit 'propel.database.url' beginnt, durch Ihre Verbindungszeichenfolge, beispielsweise:

propel.database.url = mysql: // benutzername: [email protected] / dbname

Wenn die Verbindungszeichenfolge korrekt ist (und Ihre Datei schema.yml in Ordnung ist), sollten Sie jetzt in der Lage sein, 'symfony propel-insert-sql' fehlerfrei auszuführen.