2015-12-07 2 views
1

Получение этого сообщения об ошибке хаотически, а nav'ing на мой взгляд:Laravel 5: «Базовая таблица или просмотреть не найден» Таблица X «не существует» - Laravel сбивает с толку виртуальных хостов

QueryException в connection.php линия 636: SQLSTATE [42S02]: Базовая таблица или представления не найдены: 1146 таблицу 'salesspacetv.devices' не существует (SQL:. SELECT COUNT (*) в качестве заполнителя из devices внутреннего соединения statustypes на devicesstatus = statustypesnum внутренних. присоединить aggservers на devices. aggserver_num = aggservers. num левый присоединиться tickets на devices. id = tickets. device_id группа devices. id) в connection.php линии 636

  • Мой сервер использует несколько виртуальных хостов, определенных в C: \ apache24 \ конф \ экстра \ HTTPD-vhosts.conf.
  • «c1. [Ourcompanyname] .net» - это название сайта, чью точку зрения я нахожу.
  • «salesspacetv. [Ourcompanyname] .net» - это еще один виртуальный хост (работает laravel) на нашем сервере.
  • Слово «salesspacetv» абсолютно не существует нигде в коде c1.
  • «devices» - это таблица, используемая сайтом c1, и нет таблицы «устройств», используемой сайтом salesspacetv.

Похоже, базовый код Laravel является использование делает где-то, что он думает, что это имя поддомена и Apache (FYI ... работает на Windows, на этом сервере) каким-то образом не получить правильное имя субдомена к Laravel ,

Опять же, это случайная ошибка. Если я просто обновляю страницу, ошибка исчезнет. Также обратите внимание, важно ли это или нет, что это представление использует разбиение на страницы. Я не думаю, что это имеет какое-то значение, но я подумал, что это стоит упомянуть.

Базы данных - это базы данных MySQL.

Наконец, определение виртуального хоста c1 действительно появляется перед определением виртуального хоста salesspacetv в httpd-vhosts.conf.

Спасибо.

+0

Можете ли вы разместить журналы laravel (в '/ storage/logs/laravel.log'), возможно, это может показать некоторое понимание. Интересно, почему вы пришли к выводу, что запрос не срабатывает из-за виртуального хоста - какого рода несвязанный. лично я подозреваю, что он что-то сделал с вашей конфигурацией (либо. .env, либо '/ config/database.php'). –

+0

Большое спасибо. У меня есть 56-строчный фрагмент laravel.log, относящийся к этому ... лучший способ опубликовать здесь без переполнения символа? –

+0

ну, возможно, вы могли бы использовать [pastebin] (http://pastebin.com/). в любом случае дайте ответ на приведенный ниже ответ. –

ответ

1

Я верю, что столкнулся с этой ошибкой в ​​прошлом, когда имел дело с несколькими проектами в своей локальной среде.

Позвольте мне понять, что вы используете 1 проект, и всякий раз, когда он вызывает вызов таблицы базы данных, иногда он ссылается на имя таблицы или столбца, которое текущий проект не содержит, но содержит в другом проекте?

Если это то, что происходит с вами, как я исправил его на своем конце, было названо ваши среды баз данных (.env) разными для каждого проекта.

# 1 .env Метод

.ENV

Проект 1:

DB_PROJECT1_HOST=0.0.0.0 
DB_PROJECT1_DATABASE=dbname 
DB_PROJECT1_USERNAME=dbuser 
DB_PROJECT1_PASSWORD=dbpass 

Проект 2:

DB_PROJECT2_HOST=0.0.0.0 
DB_PROJECT2_DATABASE=dbname 
DB_PROJECT2_USERNAME=dbuser 
DB_PROJECT2_PASSWORD=dbpass 

приложение \ Config \ database.php

Проект 1:

'mysql' => [ 
    'driver' => 'mysql', 
    'host'  => env('DB_PROJECT1_HOST'), 
    'database' => env('DB_PROJECT1_DATABASE'), 
    'username' => env('DB_PROJECT1_USERNAME'), 
    'password' => env('DB_PROJECT1_PASSWORD'), 
    'charset' => 'utf8', 
    'collation' => 'utf8_unicode_ci', 
    'prefix' => '', 
    'strict' => false, 
], 

Проект 2:

'mysql' => [ 
    'driver' => 'mysql', 
    'host'  => env('DB_PROJECT2_HOST'), 
    'database' => env('DB_PROJECT2_DATABASE'), 
    'username' => env('DB_PROJECT2_USERNAME'), 
    'password' => env('DB_PROJECT2_PASSWORD'), 
    'charset' => 'utf8', 
    'collation' => 'utf8_unicode_ci', 
    'prefix' => '', 
    'strict' => false, 
], 

Надеюсь, это та же проблема, что и вы, чтобы вы могли быстро протестировать это и посмотреть, применимо ли оно к вам.

# 2 Альтернативный (метод жёстко предложенный Tezla):

Вы также можете редактировать файл конфигурации базы данных (приложение \ Config \ database.php) и жёстко информацию о базе данных непосредственно, чтобы избежать утечки конфигурации:

'mysql' => [ 
    'driver' => 'mysql', 
    'host'  => '0.0.0.0', 
    'database' => 'dbname', 
    'username' => 'dbuser', 
    'password' => 'dbpass', 
    'charset' => 'utf8', 
    'collation' => 'utf8_unicode_ci', 
    'prefix' => '', 
    'strict' => false, 
] 
+1

Это выглядит очень круто. Я недостаточно хорошо разбираюсь в Laravel, чтобы узнать, как файлы .env могут быть искажены, но я выполнил ваши инструкции (поставьте «C1» для «PROJECT1» в 4 проекта 1 vbls выше в файле .database.php C1. , а затем скорректировал 4 строки в файле .env C1 в соответствии с этими именами vbl. Отлично работает до сих пор, сообщит вам, если я увижу ошибку. Спасибо ОЧЕНЬ много, ребята. В будущем ref. (Я такой noob) ... как форматировать эти комментарии с возвратом каретки и т. д., как это было в моем сообщении, и как размещать вложения или большие фрагменты кода? Еще раз спасибо! –

+1

, вы могли бы просто установить ** hardcode ** в '/ app/config', чтобы избежать утечки конфигурации, которые редко бывают. –

+1

@ J.Martin Читать здесь: https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet –

Смежные вопросы