无法使用Doctrine \ DBAL \ Schema \ Table创建表

时间:2016-10-16 23:36:40

标签: php symfony silex

我是php,Silex的新手,我正在使用这些技术在代码库的基础上开发一个小应用程序。

从代码库我得到一个数据库对象 - $ app ['db'] - (类似于连接对象)像这样 -

$app->register(new Silex\Provider\DoctrineServiceProvider(), array(
    'db.options' => array(
        'driver'   => 'pdo_sqlite',
        'path'     => __DIR__.'/app.db',
    ),
));

$ app ['db']可用于从现有数据库中获取数据,并且工作正常。

但是当我尝试使用以下代码将表添加到现有数据库时 -

use Doctrine\DBAL\Schema\Table;
$schema = $app['db']->getSchemaManager();
if (!$schema->tablesExist('users'))
{
    $users = new Table('users');
    $users->addColumn('id', 'integer', array('unsigned' => true, 'autoincrement' => true));
    $users->setPrimaryKey(array('id'));
    $users->addColumn('username', 'string', array('length' => 32));
    $users->addUniqueIndex(array('username'));
    $users->addColumn('password', 'string', array('length' => 255));
}

稍后尝试在用户表中插入记录我得到以下异常 -

3/3 TableNotFoundException in AbstractSQLiteDriver.php第58行:执行'SELECT * FROM users WHERE id =?'时发生异常用params [0]:

SQLSTATE [HY000]:一般错误:1没有这样的表:users

PDOConnection.php第79行中的2/3 PDOException:SQLSTATE [HY000]:一般错误:1没有这样的表:users

PDOConnection.php第77行中的1/3 PDOException:SQLSTATE [HY000]:一般错误:1没有这样的表:users

我确认上面的代码正在执行。当我不知道凭证时,请告诉我一种在数据库中创建新表的方法。

我怀疑我可能没有对数据库的写访问权。

提前致谢。

1 个答案:

答案 0 :(得分:2)

您已创建新的表格定义,但未将其保存到数据库。

if (!$schema->tablesExist('users'))
{
    $users = new Table('users');
    ...
    $schema->createTable($users); // save to DB
}