2013-01-17 29 views
9

Problema

Hi, I "setup m lavorare con un amico su un progetto Symfony2 Sta lavorando su un computer basato su Windows e sono sul mio Mac Noi.. il progetto e ha creato il modello/le entità del database (prima il codice) sul suo computer, ora volevo iniziare a lavorarci e quindi ho fatto un SQL stupido al mio localhost.Ho modificato i parametri.yml per abbinare le mie impostazioni. in grado di connettersi al server Ma quando provo ad aprire una pagina in cui viene utilizzato il database ottengo questo errore:.Symfony2: Base tavolo o visualizzare non trovato: 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 »

Giusto per essere chiari , la pagina funziona normalmente sul suo computer; ottiene i dati come dovrebbe essere.


Domanda

Quale può essere il problema? Ho guardato nel mio PHPmyAdmin più e più volte e il database è lì con tutti i campi e dati ...
(schermata: http://gyazo.com/4a0e5f1ee6b1e29d2d277df5fc0d8aac) Non riesco davvero a immaginare quale sia il problema.

Spero che qualcuno possa aiutarci!

+0

Quindi, per essere chiari, il browser si connette a un server web sulla tua macchina che a sua volta sta tentando di connettersi a un RDBMS sulla tua macchina (lo stesso RDBMS a cui si riferisce lo screenshot di phpMyAdmin)? Confermare l'URL visualizzato nella barra degli indirizzi del browser quando viene visualizzato tale errore e i parametri di configurazione/connessione del database nell'applicazione. – eggyal

+0

Sì, il progetto è in esecuzione su localhost con MAMP. (Sul mio Mac, sta eseguendo XAMP). Il database è un database mySQL locale. –

+0

Qual è l'impostazione ['lower_case_table_names'] dell'installazione MySQL (http://dev.mysql.com/doc/en/server-system-variables.html#sysvar_lower_case_table_names)? 'MOSTRA LE VARIABILI COME 'lower_case_table_names''. E su quale filesystem sono memorizzati i tuoi file di dati? – eggyal

risposta

13

È probabile che si tratti di un problema. Hai la tabella district sul tuo database, ma doctrine chiede la tabella District.

È necessario configurare doctrine per utilizzare il nome della tabella in lettere minuscole. Fare riferimento alla documentazione di dottrina http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/basic-mapping.html#persistent-classes per sapere come fare.

+0

La sensibilità di caso di MySQL segue il filesystem ... e HFS + (di solito) non è sensibile al maiuscolo/minuscolo. – eggyal

+0

Questo ha fatto il trucco! Ho letto anche quello che @eggyal ha detto che non ha importanza su Mac, ecco perché non pensavamo che sarebbe stato il problema. Ma apparentemente Grazie anche a Venu e eggyal per l'aiuto! –

1

Nome tabella caso problema

socialgeogroep6.District 

Dovrebbe essere socialgeogroep6.district come da screenshot. Controlla l'annotazione Entità.

+0

La maiuscole/minuscole MySQL segue il filesystem ... e HFS + è (solitamente) non sensibile al maiuscolo/minuscolo. – eggyal

4

Ho appena avuto esattamente lo stesso tipo di problema perché sto scrivendo il codice su Windows e ho bisogno di distribuire su Linux.

La soluzione è quella di aggiungere nel config.yml linea:

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

Questo non ha funzionato con me. – Abdel5

+0

Ha funzionato per me mentre provavo a configurarlo da Windows a Linux (configurazione cloud9). Grazie –

1

Una parola di cautela: Prima di leggere questa soluzione. Questa è strettamente una soluzione per coloro che stanno cercando di impostare il framework.

Penso che da quando hai appena iniziato a provare, cosa potresti fare, rilasciare il database e poi ricominciare tutto da capo.

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

Quindi, ricreare le tabelle.

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

Una parola di cautela potrebbe essere un'idea molto male a fare questo in ambiente di produzione, se è già stato creato i controller e dati è già popolato.

1

Questo lavoro per il mio in symfony 2.7. Basta mettere in config.yml:

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

Se si utilizza Orm, è possibile impostare in questo modo

District.orm.yml

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