Ответ 1
В моем коде была следующая строка:
$tags = DB::table('Tags')->get();
отлично работал локально на моих окнах XAMPP
, но нужно было изменить его на:
$tags = DB::table('Tags')->get();
для работы на моем сервере.
У меня есть эта таблица на моем локальном xampp, имя таблицы tags
, это отлично работает в моей локальной системе, но когда я загружаю эту таблицу на свой сервер, я получаю следующую ошибку:
Таблицы, которые есть в таблице peckinga_blog
, следующие:
Как вы можете видеть, tags
является одним из них. Также для таблицы tags
у меня есть следующие миграции в моем приложении laravel:
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateTagsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('Tags', function (Blueprint $table) {
$table->increments('id');
$table->mediumText('tag');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('Tags');
}
}
Теперь почему я получаю эту ошибку, несмотря на то, что моя база данных явно доступна? Что я могу сделать, чтобы мой сервер будет искать базу данных tags
вместо tags
?
В моем коде была следующая строка:
$tags = DB::table('Tags')->get();
отлично работал локально на моих окнах XAMPP
, но нужно было изменить его на:
$tags = DB::table('Tags')->get();
для работы на моем сервере.
Имена баз данных и таблиц не чувствительны к регистру в Windows и чувствительны к регистру в большинстве разновидностей Unix или Linux. Названия таблиц в MySQL - это записи в файловой системе, поэтому они нечувствительны к регистру, если базовая файловая система.
Хотя после применения миграции он должен работать. Но если он не работает и вы хотите, чтобы оба оператора, например, нижний регистр и имя верхнего регистра в таблице, были успешными, вам нужно поместить следующую строку
lower_case_table_names = 1
в вашем /etc/my.cnf или где бы вы не сохраняли конфигурацию MySQL.
Значения таблиц, генерированных капиталом /CamelCase Doctrine, и MySQL хранит их как строчные буквы!
Или
Перед экспортом базы данных из локального компьютера вы можете выполнить следующие действия:
откройте файл конфигурации MySQL: [диск]\xampp\mysql\bin\my.ini
искать: # Сервер MySQL [mysqld]
добавить это прямо под ним: lower_case_table_names = 2
сохранить файл и перезапустить службу MySQL
Обязательно добавьте системную переменную в раздел [mysqld] конфигурационного файла.
Для получения дополнительной информации вы можете проверить ссылку на ссылку MySQL.
чувствительность к регистру зависит от вашей базовой файловой системы, что объясняет несоответствие между вашей локальной и производственной машиной.
так как это обычная проблема, я бы рекомендовал использовать нижний регистр в качестве условного обозначения. измените свой Tags
на Tags
в своих миграциях, а также в model, и вам должно быть хорошо идти.
если вам нужно переименовать свою таблицу, сначала переименуйте ее в something_else
, а затем снова в Tags
.