我正在使用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
但是我在终端中得到以下输出:
[Illuminate\Database\QueryException]
SQLSTATE[HY000] [2002] 没有这样的文件或目录(SQL:从 inform
ation_schema.tables 中选择 **,其中 table_schema = db 和 table_name = 迁移([Doctrine\DBAL\Driver\PDOException]
SQLSTATE[HY000] [2002] 没有这样的文件或目录[PDOException]
SQLSTATE[HY000] [2002] 没有这样的文件或目录
如果我尝试通过MySQL工作台连接到服务器,它连接正常。
这是我的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
,但出现相同的错误。
我做错了什么??
尝试在没有DB_SOCKET选项的情况下连接到数据库。错误消息指示已尝试通过套接字进行MySQL连接(不支持(。
在下面使用 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"
不要在 MySQL 连接的环境变量中包含DB_HOST,如设置数据库会话的步骤 4 所示
这背后的原因是在使用 127.0.0.1 的计算机上工作,因为您可能在计算机上安装了 MySQL,并且它正在那里连接。