Skip to main content
 首页 » 编程设计

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

2024年04月12日57cmt

我是 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 AbstractSQLiteDriver.php 第 58 行中的 TableNotFoundException:执行“SELECT * FROM users WHERE id = ?”时发生异常参数 [0]:

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

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

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

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

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

提前致谢。

请您参考如下方法:

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

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