Samenvatting
Ik krijg de volgende foutmelding als ik probeer een nieuwe Craft-site lokaal te installeren:
CDbCommand failed to execute the SQL statement: SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected. The SQL statement executed was: SHOW TABLES LIKE "craft_%"
Nadat ik zojuist de ZIP heb gedownload, neem ik aan de betreffende versie van Craft is de laatste versie op het moment van schrijven (2.1.2563).
Point of failure
Na wat graven lijkt de fout te worden veroorzaakt door regel 59 in craft/app/etc/behaviors/AppBehavior.php
, met name de aanroep van craft()->db->tableExists()
:
$this->_isInstalled = (craft()->isConsole() || craft()->db->tableExists("info", false));
Als dat is inderdaad het geval, het betekent dat de voorafgaande controles craft()->getComponent("db")
en craft()->getIsDbConnectionValid()
doorstaan, waardoor ik volledig verbijsterd ben over wat de oorzaak is de fout.
Omgeving-info
De site draait (niet) op een lokale Vagrant VM, die graag een andere Craft-site host zonder problemen. Het is misschien de moeite waard om op te merken dat Ik heb het niet gedaan ll de andere site helemaal opnieuw op deze server.
De basisserverspecificaties zijn als volgt:
- Ubuntu 12.04 LTS (64-bit)
- Apache 2.2.22
- PHP 5.4.30
De database bestaat zeker, en ik kan er verbinding mee maken met Sequel Pro.
Heeft iemand anders tegengekomen?
Reacties
- Heb je deze discussie gelezen?
- Ik deed het. De G + -site raadt expliciet aan om SE te gebruiken bij het zoeken naar hulp, en ik kan ' geen bugrapport indienen via de CP, aangezien er (nog) geen CP is. Ook ' suggereer ik niet dat dit een bug in Craft is (als dat het geval was, zouden anderen het ongetwijfeld inmiddels zijn tegengekomen, en P & T zou het waarschijnlijk binnen enkele minuten hebben opgelost), dus SE leek het meest geschikte forum voor discussie.
- Dit is niet ' niet zozeer een antwoord, als een mea culpa. Nadat de VM volledig was vernietigd en helemaal opnieuw was begonnen (met exact dezelfde voorziening), loste het probleem zichzelf op. Ik ' ben nog steeds verbijsterd waarom dit is gebeurd, vooral omdat er niets is veranderd in termen van de VM-configuratie, maar ik zal deze mysterieuze oplossing voorlopig graag accepteren. Als ik ooit de hoofdoorzaak van het probleem achterhaal, zal ik ' een echt antwoord posten.
- @StephenLewis I ' d ga je gang en post dat toch als antwoord, als het de situatie voor iemand anders oplost. Als je ooit een " juiste " oplossing vindt, kun je deze altijd bewerken.
- @BradBell Ik heb het oorspronkelijk geprobeerd , maar SE stond erop dat ik nog 8 uur moest wachten, en toen stal die vervelende Ben Parizek mijn donder. Ik ' heb zijn antwoord geaccepteerd.
Antwoord
Terwijl het kan een onbevredigend antwoord zijn, voor de voltooiing werd deze vraag opgelost door exact dezelfde VM volledig te vernietigen en opnieuw op te bouwen.
Korte discussie op Twitter hierover hier:
https://twitter.com/monooso/status/487831027327696896
Ik heb een warme genegenheid voor de aan / uit-techniek. Ik heb zelfs gezien dat het liften repareerde!
Opmerkingen
- Wat Ben zei …
Antwoord
Ik heb een paar willekeurige fouten gezien bij het gebruik van Craft en Vagrant waardoor ik me gek voelde na het oplossen van problemen. Ik kwam tot dezelfde conclusie als jij, het vernietigen de machine en het herbouwen leken het probleem op te lossen, maar gaven me niet helemaal het antwoord, ik voelde dat ik het verschuldigd was.
Dus ik heb wat gegraven …
Ik vond de schuldige om de synchronisatiefunctie van Vagrant te zijn. Toen Vagrant voor het eerst op het toneel verscheen, was een van de grootste problemen het synchroniseren van mappen met veel bestanden en mappen, ook wel een CMS genoemd. Ik kan de directe link niet vinden, maar ik geloof dat sommige mensen problemen hadden met gasttoevoegingsprogrammas voor virtuele boxen.
Ik zeg niet dat je zwervende machine echt oud is, dat is meestal niet het geval. Ik zeg echter dat soms – ik weet niet zeker wanneer en waarom – de synchronisatiefunctie mappen / bestanden kan beschadigen of zelfs niet synchroniseren.
Als je dit opnieuw tegenkomt, zou ik ervoor zorgen dat je de bestanden in vraag over de host- en gastmachine. Vooral op zoek naar onzichtbare karakters.
Ook het vermelden waard, maar ik heb hier geen ervaring mee. Met Vagrant kunt u VMWare gebruiken als de provider die verbeterde prestaties claimt. Een nadeel is dat het $ 79 kost voor een licentie, maar het gaat ook om de toekomstige ontwikkeling van Vagrant. Details over de VMWare-provider zijn hier: