2016-10-16 2 views
1

저는 PHP, Silex에 익숙하지 않으며 이러한 기술을 사용하여 코드 기반의 상단에 작은 응용 프로그램을 개발 중입니다. 이 같은 (연결 개체 같은) - - $ 응용 프로그램 [ 'DB'] - 코드베이스에서 Doctrine DBAL Schema 테이블을 사용하여 테이블을 만들 수 없습니다.

내가 데이터베이스 객체를 얻고있다

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

$ 응용 프로그램을 [ 'DB'] 사용할 수 있습니다 기존 데이터베이스에서 데이터를 가져오고 제대로 작동하고 있습니다.

그러나 나는 다음과 같은 코드를 사용하여 기존의 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의 TableNotFoundException 라인 58 : 'SELECT * FROM users WHERE id =?'를 실행하는 동안 예외가 발생했습니다. PARAMS와 [0]

SQLSTATE [HY000] 일반 오류 1 그러한 테이블 : 사용자

2/3 PDOException PDOConnection.php 라인 79 : SQLSTATE [HY000] 일반 오류 1에게 그러한 테이블 : PDOConnection.php 라인 (77)의 사용자

1/3 PDOException는 : SQLSTATE [HY000] 일반 오류 1 그러한 테이블 : 사용자

는 I 코드의 상기 부분이 실행되고 있는지 확인하지 않는다. 자격 증명을 모르는 경우 데이터베이스에 새 테이블을 만드는 방법을 알려주십시오.

데이터베이스에 대한 쓰기 권한이없는 것으로 의심됩니다.

미리 감사드립니다.

답변

0

새 테이블 정의를 만들었지 만 DB에 저장하지 않았습니다.

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

P 감사합니다. –

+0

작동하는 경우 내 대답을 수락 할 수 있습니다.) –

관련 문제