无法使用 Doctrine\DBAL\Schema\Table 创建 table
not able to create table using Doctrine\DBAL\Schema\Table
我是 php、Silex 的新手,我正在代码库之上使用这些技术开发一个小型应用程序。
我从代码库中得到一个数据库对象 - $app['db'] -(类似于连接对象)像这样 -
$app->register(new Silex\Provider\DoctrineServiceProvider(), array(
'db.options' => array(
'driver' => 'pdo_sqlite',
'path' => __DIR__.'/app.db',
),
));
$app['db'] 可用于从现有数据库中获取数据并且工作正常。
但是当我尝试使用以下代码将 table 添加到现有数据库时 -
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));
}
稍后尝试在用户中插入记录 table 我得到以下异常 -
3/3 AbstractSQLiteDriver.php 第 58 行中的 TableNotFoundException:使用参数 [0]:
执行 'SELECT * FROM users WHERE id = ?' 时发生异常
SQLSTATE[HY000]:一般错误:1 没有这样的 table:用户
2/3 PDOConnection.php 第 79 行中的 PDOException:SQLSTATE[HY000]:一般错误:1 没有这样的 table:用户
1/3 PDOConnection.php 行 77 中的 PDOException:SQLSTATE[HY000]:一般错误:1 没有这样的 table:用户
我验证了上面的代码正在执行。请告诉我一种在我不知道凭据时在数据库中创建新 table 的方法。
我怀疑我可能没有对数据库的写入权限。
提前致谢。
您已经创建了新的 table 定义,但没有将其保存到数据库中。
if (!$schema->tablesExist('users'))
{
$users = new Table('users');
...
$schema->createTable($users); // save to DB
}
我是 php、Silex 的新手,我正在代码库之上使用这些技术开发一个小型应用程序。
我从代码库中得到一个数据库对象 - $app['db'] -(类似于连接对象)像这样 -
$app->register(new Silex\Provider\DoctrineServiceProvider(), array(
'db.options' => array(
'driver' => 'pdo_sqlite',
'path' => __DIR__.'/app.db',
),
));
$app['db'] 可用于从现有数据库中获取数据并且工作正常。
但是当我尝试使用以下代码将 table 添加到现有数据库时 -
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));
}
稍后尝试在用户中插入记录 table 我得到以下异常 -
3/3 AbstractSQLiteDriver.php 第 58 行中的 TableNotFoundException:使用参数 [0]:
执行 'SELECT * FROM users WHERE id = ?' 时发生异常SQLSTATE[HY000]:一般错误:1 没有这样的 table:用户
2/3 PDOConnection.php 第 79 行中的 PDOException:SQLSTATE[HY000]:一般错误:1 没有这样的 table:用户
1/3 PDOConnection.php 行 77 中的 PDOException:SQLSTATE[HY000]:一般错误:1 没有这样的 table:用户
我验证了上面的代码正在执行。请告诉我一种在我不知道凭据时在数据库中创建新 table 的方法。
我怀疑我可能没有对数据库的写入权限。
提前致谢。
您已经创建了新的 table 定义,但没有将其保存到数据库中。
if (!$schema->tablesExist('users'))
{
$users = new Table('users');
...
$schema->createTable($users); // save to DB
}