Миграция финкса с использованием sqlite-памяти не работает в 0.9.2, у меня очень простое приложение с одной таблицей (продуктом).После выполнения миграции таблица продукта не существует:
use Symfony\Component\Yaml\Yaml;
use Phinx\Config\Config;
use Phinx\Migration\Manager;
use Symfony\Component\Console\Input\StringInput;
use Symfony\Component\Console\Output\NullOutput;
$pdo = new PDO('sqlite::memory:', null, null, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);
$settings = Yaml::parseFile('../phinx.yml');
$settings['environments']['testing'] = [
'adapter' => 'sqlite',
'connection' => $pdo
];
$config = new Config($settings);
$manager = new Manager($config, new StringInput(' '), new NullOutput());
$manager->migrate('testing');
$manager->seed('testing');
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
// This line creates an exception of table doesn't exist
$pdo->query("SELECT * FROM product");
Эта последняя строка запрашивает таблицу продукта, которая выдает следующее исключение:
PDOException: SQLSTATE [HY000]: общая ошибка:1 нет такой таблицы: продукт находится в /home/vagrant/code/ecommerce/public/index.php в строке 43
Для полноты вот миграция продукта, которая прекрасно работает со средой разработки mysql:
use Phinx\Migration\AbstractMigration;
class Product extends AbstractMigration
{
public function change()
{
$table = $this->table('product');
$table->addColumn('name', 'string', ['limit' => 100, 'null' => false])
->addColumn('price', 'integer')
->create();
}
}