php - 在服务器上,我的应用程序正在寻找大写的表名而不是小写的

标签 php mysql laravel laravel-5

我在本地 xampp 上有这张表,表名是 tags ,这在我的本地系统上运行良好,但是当我将此表上传到我的服务器时,我收到以下错误:

enter image description here

我在 peckinga_blog 表下的表如下:

enter image description here

如您所见,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

最佳答案

数据库和表名在 Windows 中不区分大小写,而在大多数 Unix 或 Linux 中则区分大小写。 MySQL 中的表名是文件系统条目,因此如果底层文件系统是大小写不敏感的。

虽然在应用迁移之后,它应该可以工作但是如果它不起作用并且您希望这两个语句(即表中的小写和大写名称)成功,您需要放置以下行

lower_case_table_names = 1

在你的/etc/my.cnf 或任何你保存 MySQL 配置的地方。

Doctrine 生成大写/CamelCase 表名,MySQL 将它们存储为小写!

或者

  1. 在从本地导出数据库之前,您可以执行以下步骤:

  2. 打开你的 MySQL 配置文件:[drive]\xampp\mysql\bin\my.ini

  3. 查找:# MySQL 服务器 [mysqld]

  4. 在其正下方添加:lower_case_table_names = 2

  5. 保存文件并重启MySQL服务

请务必将系统变量添加到配置文件的[mysqld]部分。

有关更多信息,您可以查看 MySQL Reference Link .

关于php - 在服务器上,我的应用程序正在寻找大写的表名而不是小写的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41967746/

相关文章:

php - 如何创建一个 24 小时后自动更改列值的 php 页面

java - 实体管理器坚持后,javax.transaction.RollbackException : Transaction marked for rollback

mysql - MySql 中的嵌套查询

php - 在 Ubuntu 上安装 Laravel/Homestead

PHP SQL 循环返回 PHP 代码

php - 地穴为两个不同(相似)的密码返回相同的哈希值

PHP 关联数组变量赋值

php - 使用多个复选框返回 MySQL 结果

php - Laravel - 覆盖模型 ID

php - 我想使用 laravel 8 mvc 从一个复选框检查我的所有复选框