2017-01-28 37 views
0

my bin/cake bake allコマンドが機能していて、ベークするデータベースに基づいてすべてのモデル名が表示されますが、マイグレーションは機能しません。これは私がそれを得ているエラーです。ケーキの移行のシードが機能しない(データベースタイプを推測できませんでした)

bin/cake migrations seed 

Welcome to CakePHP v3.3.12 Console 
--------------------------------------------------------------- 
App : src 
Path: /Users/myhostcomputer/workspace/myapp/src/ 
PHP : 7.1.0 
--------------------------------------------------------------- 
Exception: Could not infer database type from driver in [/Users/myhostcomputer/workspace/myapp/vendor/cakephp/migrations/src/ConfigurationTrait.php, line 151] 
2017-01-28 12:47:48 Error: [InvalidArgumentException] Could not infer database type from driver 
Stack Trace: 
#0 /Users/myhostcomputer/workspace/myapp/vendor/cakephp/migrations/src/ConfigurationTrait.php(83): Migrations\Command\Seed->getAdapterName('mysql') 
#1 /Users/myhostcomputer/workspace/myapp/vendor/robmorgan/phinx/src/Phinx/Console/Command/AbstractCommand.php(91): Migrations\Command\Seed->getConfig() 
#2 /Users/myhostcomputer/workspace/myapp/vendor/cakephp/migrations/src/ConfigurationTrait.php(206): Phinx\Console\Command\AbstractCommand->bootstrap(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) 
#3 /Users/myhostcomputer/workspace/myapp/vendor/cakephp/migrations/src/Command/Seed.php(69): Migrations\Command\Seed->bootstrap(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) 
#4 /Users/myhostcomputer/workspace/myapp/vendor/symfony/console/Command/Command.php(262): Migrations\Command\Seed->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) 
#5 /Users/myhostcomputer/workspace/myapp/vendor/symfony/console/Application.php(826): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) 
#6 /Users/myhostcomputer/workspace/myapp/vendor/symfony/console/Application.php(189): Symfony\Component\Console\Application->doRunCommand(Object(Migrations\Command\Seed), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) 
#7 /Users/myhostcomputer/workspace/myapp/vendor/symfony/console/Application.php(120): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) 
#8 /Users/myhostcomputer/workspace/myapp/vendor/cakephp/migrations/src/Shell/MigrationsShell.php(101): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) 
#9 [internal function]: Migrations\Shell\MigrationsShell->main('migrations', 'seed') 
#10 /Users/myhostcomputer/workspace/myapp/vendor/cakephp/cakephp/src/Console/Shell.php(472): call_user_func_array(Array, Array) 
#11 /Users/myhostcomputer/workspace/myapp/vendor/cakephp/migrations/src/Shell/MigrationsShell.php(156): Cake\Console\Shell->runCommand(Array, true, Array) 
#12 /Users/myhostcomputer/workspace/myapp/vendor/cakephp/cakephp/src/Console/ShellDispatcher.php(227): Migrations\Shell\MigrationsShell->runCommand(Array, true, Array) 
#13 /Users/myhostcomputer/workspace/myapp/vendor/cakephp/cakephp/src/Console/ShellDispatcher.php(182): Cake\Console\ShellDispatcher->_dispatch(Array) 
#14 /Users/myhostcomputer/workspace/myapp/vendor/cakephp/cakephp/src/Console/ShellDispatcher.php(128): Cake\Console\ShellDispatcher->dispatch(Array) 
#15 /Users/myhostcomputer/workspace/myapp/bin/cake.php(34): Cake\Console\ShellDispatcher::run(Array) 
#16 {main} 

これはapp.php

'Datasources' => [ 
     'default' => [ 
      'className' => 'Cake\Database\Connection', 
      'driver' => 'mysql', 
      'persistent' => false, 
      'host' => 'localhost', 
      'port' => '/Applications/MAMP/tmp/mysql/mysql.sock', 
      'username' => 'XXXXXXXX', 
      'password' => 'XXXXXXXXXXXXXXXX', 
      'database' => 'XXXXXXXX', 
      'encoding' => 'utf8', 
      'timezone' => 'UTC', 
      'flags' => [], 
      'cacheMetadata' => true, 
      'log' => false, 
      'quoteIdentifiers' => false, 
      //'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'], 

      'url' => env('DATABASE_URL', null), 
     ], 

から私のデータソース設定は多分それは私がマックOS上で働いていると

答えて

1

mysqlがある私はMAMPを使用していることで何かを持っています有効なdriverオプション値ではありません。これは、大文字と小文字を区別するファイルシステムでは、恐らくmysql.phpというファイルに変換されるため、失敗します。

正しい短いクラス名は、それは、(完全に)修飾されたクラス名、または構築ドライバクラスのインスタンスを期待(the source where the exception is being thrownに見られるように)しかし移行プラグインが短いクラス名をサポートしていない、大文字Mと、Mysqlあろう。

だから、長い話を短く:

'driver' => \Cake\Database\Driver\Mysql::class 
+0

の定義::クラスは必要ありませんでしたが、はい、今働いている...ありがとう! –

+0

[magic 'class'定数](http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.class.class)を使用することは確実に必要です。クラス名を文字列として定義する)、コードを削除すると、存在しない名前空間の定数にアクセスしようとするため、致命的なエラーが発生するはずです。 @Valor_ – ndm

+0

これは奇妙です。なぜなら、それは:: classと動作していないからです。 –

関連する問題