【问题标题】:[Laravel]: SQLSTATE[3F000]: Invalid schema name[Laravel]:SQLSTATE [3F000]:无效的模式名称
【发布时间】:2017-06-15 03:46:57
【问题描述】:

构建 Laravel 项目 (v. 5.4) 当我运行 php artisan migrate 时,我收到以下错误消息:

[Illuminate\Database\QueryException]
SQLSTATE[3F000]: Invalid schema name: 7 ERROR: no schema has been selected
to create in (SQL: create table "migrations" ("id" serial primary key not
null, "migration" varchar(255) not null, "batch" integer not null))

现在才刚刚开始发生这种情况,而我之前在这个项目中没有发生任何事故,并且自从初始设置有效以来,我没有更改我的 .env 文件或 config/database.php 文件。我认为这可能与错误的 postgresql 用户有关,但我登录了 CLI 并 SET ROLE 登录了相关数据库的所有者。没有效果。

【问题讨论】:

  • 确保你的数据库有一个名为“public”的模式,这是 laravel 中的默认模式,PostgreSQL postgresql.org/docs/9.1/static/ddl-schemas.html
  • 目前我的架构设置为:schema => env('DB_PGSQL_SCHEMA', 'public'),在我的 database.php 文件中。在我的 .env 文件中,我有 DB_PGSQL_SCHEMA=fes 这在以前的迁移中对我有用,最近刚刚停止工作,而我没有更改这些文件中的任何内容。在这种情况下,我应该仍然创建一个名为“public”的模式,还是应该是“fes”?编辑:它已经有“公共”模式,但创建“fes”导致迁移工作。谢谢!
  • 你找到解决办法了吗?

标签: php postgresql laravel


【解决方案1】:

你有你的.env吗?如果不这样做

mv .env.example .env

并根据自己的喜好更新以下内容

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

【讨论】:

    【解决方案2】:

    我将架构名称添加到我的表中,这对我有用。以前是 table,现在是 public.table

    【讨论】:

      【解决方案3】:

      有时我遇到了这个问题,在我的情况下,我通过在 php.ini 文件中注释清楚的行来解决它,您需要根据您使用的银行进行更改

      ;extension = pdo_pgsql
      

      extension = pdo_pgsql
      

      【讨论】:

        【解决方案4】:

        【讨论】:

        • 欢迎来到 Stack Overflow!虽然这段代码可以解决问题,including an explanation 解决问题的方式和原因确实有助于提高帖子的质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的答案添加解释并说明适用的限制和假设。
        【解决方案5】:

        如果您的架构名称不是“public”,只需将其重命名为“public”

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-03-15
          • 2011-08-05
          • 1970-01-01
          • 2016-12-15
          • 2017-11-04
          • 1970-01-01
          • 2017-12-27
          • 1970-01-01
          相关资源
          最近更新 更多