首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Doctrine保存行时Doctrine_Connection_Mysql_Exception

使用Doctrine保存行时Doctrine_Connection_Mysql_Exception
EN

Stack Overflow用户
提问于 2011-08-07 16:07:45
回答 2查看 2K关注 0票数 1

我有一张简单的桌子。这是模型图片:

代码语言:javascript
复制
abstract class BaseImages extends Doctrine_Record
{
    public function setTableDefinition()
    {
        $this->setTableName('images');
        $this->hasColumn('id', 'integer', 4, array(
             'type' => 'integer',
             'length' => 4,
             'fixed' => false,
             'unsigned' => false,
             'primary' => true,
             'autoincrement' => true,
             ));
        $this->hasColumn('file', 'string', 45, array(
             'type' => 'string',
             'length' => 45,
             'fixed' => false,
             'unsigned' => false,
             'primary' => false,
             'notnull' => false,
             'autoincrement' => false,
             ));
        $this->hasColumn('order', 'integer', 4, array(
             'type' => 'integer',
             'length' => 4,
             'fixed' => false,
             'unsigned' => false,
             'primary' => false,
             'default' => '0',
             'notnull' => false,
             'autoincrement' => false,
             ));
    }

    public function setUp()
    {
        parent::setUp();
        $this->hasMany('AuthorsHasImages', array(
             'local' => 'id',
             'foreign' => 'images_id'));

        $this->hasMany('Banners', array(
             'local' => 'id',
             'foreign' => 'images_id'));

        $this->hasMany('BooksHasImages', array(
             'local' => 'id',
             'foreign' => 'images_id'));

        $this->hasMany('Collections', array(
             'local' => 'id',
             'foreign' => 'images_id'));

        $this->hasMany('IllustratorsHasImages', array(
             'local' => 'id',
             'foreign' => 'images_id'));

        $this->hasMany('MerchandisingHasImages', array(
             'local' => 'id',
             'foreign' => 'images_id'));
    }
}

当我使用:

代码语言:javascript
复制
$image = new Images();
$image->file = $name;
$image->save();

我有以下错误:

致命错误:默认异常'Doctrine_Connection_Mysql_Exception‘与消息'SQLSTATE42000:语法错误或访问冲突: 1064在您的SQLSTATE42000语法中有一个错误;检查与您的/Users/maurogadaleta/Sites/org.blackiebooks/phpinc/doctrine/Doctrine/Connection.php:1082服务器版本对应的手册,以获得正确的语法,以便在/Users/maurogadaleta/Sites/org.blackiebooks/phpinc/doctrine/Doctrine/Connection.php:1082堆栈跟踪:#0 /Users/maurogadaleta/Sites/org.blackiebooks/phpinc/doctrine/Doctrine/Connection/Statement.php(269):Doctrine_Connection->rethrowException(Object(PDOException),中的第1行使用接近“order,file)值”('0',‘P 8040001.JPG’)对象( /Users/maurogadaleta/Sites/org.blackiebooks/phpinc/doctrine/Doctrine/Connection.php(1042):)) #1 /Users/maurogadaleta/Sites/org.blackiebooks/phpinc/doctrine/Doctrine/Connection.php(687):Doctrine_Connection_语句->执行(数组) #2 /Users/maurogadaleta/Sites/org.blackiebooks/phpinc/doctrine/Doctrine/Connection.php(687):Doctrine_Connection->exec(‘插入ima.’,数组) #3 /Users/maurogadaleta/Sites/org.blackiebooks/phpinc/doctrine/Doctrine/Connection/UnitOfWork.php(647):Doctrine_ in /Users/maurogadaleta/Sites/org.blackiebooks/phpinc/doctrine/Doctrine/Connection.php (第1082行)

有人知道我为什么会犯这个错误吗?我能做些什么来解决这个问题呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-01 14:34:00

使用标识符引用;

代码语言:javascript
复制
$conn->setAttribute(Doctrine_Core::ATTR_QUOTE_IDENTIFIER, true);

http://www.doctrine-project.org/documentation/manual/1_2/hu/configuration#identifier-quoting

票数 3
EN

Stack Overflow用户

发布于 2011-08-08 22:16:45

看起来Doctrine没有引用列名,order是一个MySQL关键字。尝试重命名列(或者如果可能的话,强迫Doctrine引用它)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6973934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档