2016-10-16 12 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 58行目のTableNotFoundException: 'SELECT * FROM users WHERE id =?'の実行中に例外が発生しました。 paramsは[0]:

SQLSTATE [HY000]:一般的なエラー:1このようなテーブル:ユーザ

2/3 PDOException PDOConnection.phpライン79:SQLSTATE [HY000]:一般的なエラー:1ないように表:ユーザー

1/3 PDOConnection.php線77にPDOException:SQLSTATE [HY000]:一般的なエラー:1このようなテーブル:ユーザ

Iはコードの上記部分が実行されていることを確認しました。資格情報がわからないときにデータベースに新しいテーブルを作成する方法を教えてください。

データベースへの書き込みアクセス権がない可能性があります。

ありがとうございます。

答えて

0

新しいテーブル定義を作成しましたが、DBに保存しませんでした。

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

Pありがとうございます。 –

+0

答えがあれば受け入れることができます;) –

関連する問題