sql >> データベース >  >> RDS >> Mysql

DBテーブルへのセッションの保存が機能しない(Zend_Session_SaveHandler_DbTableを使用)

    私はこれをうまく機能させることができました:

    私のapplication.ini:

    resources.db.isDefaultTableAdapter = true
    resources.db.adapter = "pdo_mysql"
    resources.db.params.host = "localhost"
    resources.db.params.dbname = "dbname"
    resources.db.params.username = "username"
    resources.db.params.password = "password"
    

    私のbootstrap.php:

    protected function _initSession() {
        $resource = $this->getPluginResource('db');
        $dbAdapter = $db = $resource->getDbAdapter();
        Zend_Registry::set("db", $dbAdapter);
        Zend_Db_Table_Abstract::setDefaultAdapter($dbAdapter);
        $config = array(
            'name' => 'session',
            'primary' => 'id',
            'modifiedColumn' => 'modified',
            'dataColumn' => 'data',
            'lifetimeColumn' => 'lifetime',
            'db' => $dbAdapter
        );
    
        Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config));
        Zend_Session::start();
    }
    

    この関数は、Zend_Session_Namespaceオブジェクトを初めて作成したときにセッションが開始されるため、bootstrap.phpの最初の関数として配置されました。これを行うと、_initSession()関数が呼び出される前に、標準のファイルベースのセッションが開始される場合があります。

    最後に、session.sql:

    DROP TABLE IF EXISTS `session`;
    
    
    CREATE TABLE `session` (
    
      `id` char(32) NOT NULL DEFAULT '',
    
      `modified` int(11) DEFAULT NULL,
    
      `lifetime` int(11) DEFAULT NULL,
    
      `data` text,
    
      PRIMARY KEY (`id`)
    
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    

    どこかで、テーブルはInnoDBでなければならないことを読みました。



    1. SELECTリストの他の場所でエイリアスを参照する

    2. Django-ForeignKeyリレーションをOneToOneに変更します

    3. MySQLルートパスワードの変更

    4. SQLServerで同等のORACLEConnectby句