Resumo
Estou recebendo o seguinte erro ao tentar instalar um novo site Craft localmente:
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_%"
Tendo acabado de baixar o ZIP, presumo a versão do Craft em questão é a mais recente no momento da escrita (2.1.2563).
Ponto de falha
Após algumas pesquisas, o erro parece ser causado pela linha 59 em craft/app/etc/behaviors/AppBehavior.php
, especificamente a chamada para craft()->db->tableExists()
:
$this->_isInstalled = (craft()->isConsole() || craft()->db->tableExists("info", false));
Se esse é realmente o caso, significa que as verificações craft()->getComponent("db")
e craft()->getIsDbConnectionValid()
anteriores estão passando, o que me deixa completamente perplexo quanto ao que está causando o erro.
Informação do ambiente
O site (não) está rodando em uma VM Vagrant local, que felizmente está hospedando outro site Craft sem problemas. Vale a pena notar que Eu não instalei todo o outro site do zero neste servidor.
As especificações básicas do servidor são as seguintes:
- Ubuntu 12.04 LTS (64 bits)
- Apache 2.2.22
- PHP 5.4.30
O banco de dados definitivamente existe, e posso me conectar a ele usando Sequel Pro.
Alguém tem mais se deparou com isso?
Comentários
- Você leu esta discussão?
- Sim. O site do G + recomenda explicitamente o uso de SE ao buscar ajuda, e não posso ' enviar um relatório de bug por meio do CP, pois (ainda) não há CP. Além disso, ' não estou sugerindo que seja um bug no Craft (se fosse, outros sem dúvida o teriam encontrado agora, e P & T provavelmente o teria corrigido em minutos), então SE parecia o fórum mais apropriado para discussão.
- Isso não é ' uma resposta, como um mea culpa. Depois de destruir completamente a VM e começar do zero (exatamente com o mesmo provisionamento), o problema se resolveu. Eu ' estou perplexo quanto ao motivo disso ter acontecido, especialmente porque nada mudou em termos de configuração da VM, mas aceitarei essa solução misteriosa por enquanto. Se algum dia eu descobrir a causa raiz do problema, ' postarei uma resposta real.
- @StephenLewis I ' d vá em frente e poste isso como uma resposta de qualquer maneira, na chance de resolver a situação para outra pessoa. Se você encontrar uma solução " adequada ", poderá editá-la a qualquer momento.
- @BradBell Eu tentei originalmente , mas SE insistiu que eu esperasse por mais 8 horas, e então aquele maldito Ben Parizek roubou meu raio. Eu ' aceitei sua resposta.
Resposta
Enquanto pode ser uma resposta insatisfatória, para fins de conclusão, essa questão foi resolvida destruindo completamente e reconstruindo exatamente a mesma VM.
Breve discussão no Twitter sobre isso aqui:
https://twitter.com/monooso/status/487831027327696896
Tenho uma grande afeição pela técnica liga / desliga. Já vi ele consertar elevadores!
Comentários
- O que Ben disse …
Resposta
Eu vi alguns erros aleatórios ao usar o Craft e o Vagrant que me deixaram maluco após a solução de problemas. Cheguei à mesma conclusão que você, destruindo a máquina e a reconstrução pareceram resolver o problema, mas não me deram a resposta que eu achava que mereciam.
Então eu fiz algumas pesquisas …
Eu encontrei o culpado para ser a funcionalidade de sincronização do Vagrant. Quando o Vagrant entrou em cena pela primeira vez, um dos maiores problemas era sincronizar pastas com muitos arquivos e diretórios, também conhecido como CMS. Não consigo encontrar o link direto, mas acredito que algumas pessoas tiveram problemas com as ferramentas de adição de convidado da caixa virtual.
Não estou dizendo que sua máquina vagrant seja realmente antiga, esse tende a não ser o caso. No entanto, estou dizendo que às vezes – não tenho certeza quando e por quê – a função de sincronização pode corromper ou até mesmo não sincronizar diretórios / arquivos.
Se você se deparar com isso novamente, eu certificaria que você diferenciou os arquivos pergunta na máquina host e convidado. Especialmente procurando por personagens invisíveis.
Também vale a pena notar, mas não tenho nenhuma experiência com isso. O Vagrant permite que você use o VMWare como o provedor que alega desempenho aprimorado. Uma desvantagem é que custa $ 79 para uma licença – mas também vai para o financiamento do desenvolvimento futuro do Vagrant. Os detalhes sobre o provedor VMWare estão aqui: