【问题标题】:Can't run migrations in Google Cloud SQL无法在 Google Cloud SQL 中运行迁移
【发布时间】:2020-10-25 04:23:36
【问题描述】:

我正在使用 Laravel 5.3,并按照本教程设置自己的 Google Cloud:

https://cloud.google.com/community/tutorials/run-laravel-on-appengine-standard

我正在尝试运行我的数据库迁移,所以我这样做了:

export DB_DATABASE=db DB_USERNAME=root DB_PASSWORD=<my_db_password> DB_SOCKET="<my_connection_name>"
php artisan migrate --force

但我在终端中得到以下输出:

[照亮\数据库\查询异常]
SQLSTATE[HY000] [2002] 没有这样的文件或目录 (SQL: select * from inform
ation_schema.tables 其中 table_schema = db 和 table_name = 迁移)

[Doctrine\DBAL\Driver\PDOException]
SQLSTATE[HY000] [2002] 没有这样的文件或目录

[PDO异常]
SQLSTATE[HY000] [2002] 没有这样的文件或目录

如果我尝试通过 MySQL Workbench 连接到服务器,它可以正常连接。

这是我的 app.yaml 文件(我删除了敏感信息):

runtime: php72

runtime_config:
    document_root: public

env_variables:
    APP_LOG: errorlog
    # Application key
    APP_KEY: <my_app_key>
    # Storage path
    APP_STORAGE: /tmp
    VIEW_COMPILED_PATH: /tmp
    CACHE_DRIVER: database
    SESSION_DRIVER: database
    # Database configuration
    DB_CONNECTION: mysql
    DB_SOCKET: /cloudsql/<my_connection_name>
    DB_HOST: 127.0.0.1
    DB_PORT: 3306
    DB_DATABASE: db
    DB_USERNAME: root
    DB_PASSWORD: <my_db_password>

beta_settings:
    cloud_sql_instances: "<my_connection_name>"

我也尝试将127.0.0.1 更改为localhost,但我得到了同样的错误。

我做错了什么??

【问题讨论】:

标签: laravel google-app-engine laravel-5 google-cloud-platform google-cloud-sql


【解决方案1】:

不要在 MySQL 连接的环境变量中包含 DB_HOST,如Set up Database Sessions 的第 4 步所示

这背后的原因是你的机器上使用 127.0.0.1 是因为你可能在你的机器上安装了 MySQL 并且它正在那里连接。

【讨论】:

    【解决方案2】:

    尝试在没有 DB_SOCKET 选项的情况下连接到数据库。错误消息表明尝试了通过套接字的 MySQL 连接(不支持)。

    【讨论】:

      【解决方案3】:

      使用下面的 app.yaml 配置

      runtime: php
      env: flex
      
      runtime_config:
        document_root: public
      
      # Ensure we skip ".env", which is only for local development
      skip_files:
        - .env
      manual_scaling:
        instances: 1
      resources:
        cpu: 1
        memory_gb: 0.5
        disk_size_gb: 10
      env_variables:
      # Put production environment variables here.
       APP_LOG: errorlog
       APP_KEY: key
       CACHE_DRIVER: database
       SESSION_DRIVER: database
       ## Set these environment variables according to your CloudSQL 
       configuration.
       DB_HOST: localhost
       DB_DATABASE: dbname
       DB_USERNAME: username
       DB_PASSWORD: db_password
       DB_SOCKET: "/cloudsql/connection_name"
      
      beta_settings:
      # for Cloud SQL, set this value to the Cloud SQL connection name,
      # e.g. "project:region:cloudsql-instance"
      cloud_sql_instances: "connection_name"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-02-20
        • 2021-09-01
        • 2017-11-24
        • 2021-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多