无法在Google Cloud SQL中运行迁移

时间:2020-07-04 17:41:03

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

我正在使用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:从notify中选择*
ation_schema.tables,其中table_schema = db,table_name =迁移)

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

[PDOException]
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,但遇到相同的错误。

我在做什么错??

3 个答案:

答案 0 :(得分:0)

尝试不使用DB_SOCKET选项连接到数据库。错误消息指示尝试通过套接字进行MySQL连接(不支持)。

答案 1 :(得分:0)

使用以下app.yaml配置

def leapyear( y):
  return (y%4==0 and y%100!=0) or y%400==0

def valid_date( year, month, day):
  if (day <= 0) or (month <= 0) or (year < 1582): return False
  
  last = [31,29 if leapyear( year) else 28,31,30,31,30,31,31,30,31,30,31]
  return (month <= 12) and (day <= last[month-1])

year, month, day = input( "Enter date (yyyy-mm-dd):").split( '-')

if valid_date( int( year), int( month), int( day)): 
  print( "Fecha válida")
else:  print( "Fecha no válida")

答案 2 :(得分:-1)

Set up Database Sessions的步骤4所示,请勿在MySQL连接的环境变量中包括DB_HOST

之所以在使用127.0.0.1的计算机上运行,​​是因为您的计算机上可能安装了MySQL,并且该计算机正在此处连接。