2013-01-17 15 views
9

Problem

Hallo, ich "m mit einem Freund auf einem Symfony2 Projekt arbeiten Er arbeitet auf einem Windows-Computer basiert, und ich bin auf meinem Mac Wir Setup das Projekt und machte das Datenbankmodell/die Entitäten (Code zuerst) auf seinem Computer. Jetzt wollte ich anfangen, daran zu arbeiten, also machten wir einen SQL dumm zu meinem localhost. Ich bearbeitete die Parameter.yml, um meinen Einstellungen zu entsprechen kann mit dem Server verbinden Aber wenn ich versuche, eine Seite zu öffnen, in dem die Datenbank verwendet wird ich diese Fehlermeldung erhalten:.Symfony2: Basistabelle oder Ansicht nicht gefunden:.. 1146

An exception occurred while executing 'SELECT t0.id AS id1, t0.name AS name2, t0.bigimage AS bigimage3, t0.smallimage AS smallimage4, t0.info AS info5, t0.city_id AS city_id6 FROM District t0':

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'socialgeogroep6.District' doesn't exist 500 Internal Server Error - DBALException 1 linked Exception: PDOException »

einfach klar zu sein, , die Seite läuft normal auf seinem Computer; Er bekommt die Daten so, wie sie sein sollten.


Frage

Was kann das Problem sein? Ich schaute in meinem PHPmyAdmin immer und immer wieder und die Datenbank ist dort mit allen Feldern und Daten ...
(Bildschirm: http://gyazo.com/4a0e5f1ee6b1e29d2d277df5fc0d8aac) Ich kann mir wirklich nicht vorstellen, was das Problem ist.

Ich hoffe, dass uns jemand helfen kann!

+0

Also, klar sein, dass Ihr Browser an einen Web-Server verbinden auf Ihrem Rechner, der versucht, sich mit einem RDBMS auf Ihrem Rechner zu verbinden (das gleiche RDBMS, auf das sich dieser phpMyAdmin-Screenshot bezieht)? Bitte bestätigen Sie die URL, die in der Adresszeile des Browsers angezeigt wird, wenn Sie diesen Fehler sehen und die Datenbankkonfigurations-/Verbindungsparameter in Ihrer Anwendung. – eggyal

+0

Ja, das Projekt läuft auf localhost mit MAMP. (auf meinem Mac läuft er XAMP). Die Datenbank ist eine lokale mySQL-Datenbank. –

+0

Was ist die Einstellung ['lower_case_table_names'] in der MySQL-Installation (http://dev.mysql.com/doc/en/server-system-variables.html#sysvar_lower_case_table_names)? 'SHOW VARIABLES LIKE 'lower_case_table_names'. Und auf welchem ​​Dateisystem werden Ihre Dateien gespeichert? – eggyal

Antwort

13

Es ist wahrscheinlich ein Fallproblem. Sie haben die district Tabelle in Ihrer Datenbank, aber Doktrin fragt nach der District Tabelle.

Sie sollten Doktrin so konfigurieren, dass der Tabellenname in Kleinbuchstaben verwendet wird. Lesen Sie in der Doktrin-Dokumentation http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/basic-mapping.html#persistent-classes, wie Sie dies tun können.

+0

MySQL Case Sensitivity folgt dem Dateisystem ... und HFS + ist (in der Regel) keine Groß-/Kleinschreibung. – eggyal

+0

Das hat den Trick gemacht! Ich habe auch gelesen, was @eggyal gesagt hat, dass es auf Mac keine Rolle spielte, deshalb dachten wir nicht, dass dies das Problem sein würde. Aber es hat anscheinend getan. Danke auch an Venu und eggyal für die Hilfe! –

1

Tabellenname Fall Ausgabe

socialgeogroep6.District 

Es sollte socialgeogroep6.district gemäß dem Screenshot sein. Überprüfen Sie die Entitätsannotation.

+0

Die Sensitivität der MySQL-Groß-/Kleinschreibung folgt dem Dateisystem ... und HFS + ist (normalerweise) case insensitive. – eggyal

4

Ich hatte gerade genau die gleiche Art von Problem, weil ich Code auf Windows schreibe und ich muss auf Linux bereitstellen.

Die Lösung ist in config.yml die Zeile hinzufügen:

doctrine: 
    orm: 
     naming_strategy: doctrine.orm.naming_strategy.underscore 
+0

Dieser hat nicht mit mir gearbeitet. – Abdel5

+0

Es funktionierte für mich beim Versuch, es von Windows zu Linux (Cloud9-Konfiguration) zu konfigurieren. Vielen Dank –

1

Ein Wort der Vorsicht: Bevor diese Lösung zu lesen. Dies ist streng genommen eine Lösung für diejenigen, die versuchen, das Framework einzurichten.

Ich denke, da Sie gerade erst ausprobieren, was Sie tun könnten, ist, Datenbank zu löschen und dann alles neu zu starten.

- mysql -uroot -proot 
- show databases; 
- drop database <dbname>; 

Dann erstellen Sie die Tabellen neu.

- app/console doctrine:database:create 
- app/console doctrine:schema:create 

Ein Wort der Vorsicht könnte es eine sehr schlechte Idee, diese in der Produktionsumgebung zu tun, wenn Sie bereits Ihre Controller und Daten erstellt wird, bereits ausgefüllt.

1

Diese Arbeit für meine in symfony 2.7. Einfach in die Konfig.yml:

doctrine: 
    # ... 
    orm: 
     # ... 
     entity_managers: 
      default: 
       naming_strategy: doctrine.orm.naming_strategy.underscore 
0

Wenn Sie Orm verwenden, die Sie festlegen können, um es wie dieses

District.orm.yml

Project\Bundle\DuterteBundle\Entity\Vp: 
    type: entity 
    table: district//note the lowercase 
    repositoryClass: Project\Bundle\DuterteBundle\Repository\VpRepository 
Verwandte Themen