Symfony doctrine:schema:update mariadb 问题

Symfony doctrine:schema:update mariadb problem

几天前,我将 xampp 更新为最新的 64 位版本 php 7.1.33,MySQL Ver 15.1 - 10.4.10-MariaDB

我最后的设置是 32 位版本 - php 7.1.22,mysql 10.1.36。

我的 Symfony 版本太旧 - 2.8.52,但我不能用当前版本升级它。

为什么我升级了?因为 composer update 退出并出现 out of memory 错误。

问题:

当我 运行 php app/console doctrine:schema:update --force 时,它会尝试更新一些表,即使它们完全是它们应该的样子,并且存在错误

[Doctrine\DBAL\DBALException] An exception occurred while executing 'ALTER TABLE sport_monks_odds CHANGE bookmaker_id bookmaker_id INT DEFAULT NULL, CHANGE match_id_id match_id_id INT DEFAULT NULL, CHANGE home home NUMERIC(8, 3) DEFAULT NULL, CHANGE draw draw NUMERIC(8, 3) DEFAULT NULL, CHANGE away away NUMERIC(8, 3) DEFAULT NULL, CHANGE over over NUMERIC(8, 3) DEFAULT NULL, CHANGE under under NUMERIC(8, 3) DEFAULT NULL, CHANGE handicap handicap NUMERIC(8, 2) DEFAULT NULL, CHANGE lastUpdated lastUpdated DATETIME DEFAULT NULL, CHANGE total total NUMERIC(8, 2) DEFAULT NULL, CHANGE probability1 probability1 VARCHAR(10) DEFAULT NULL, CHANGE probability2 probability2 VARCHAR(10) DEFAULT NULL, CHANGE probabilityx probabilityx VARCHAR(10) DEFAULT NULL':

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server v ersion for the right syntax to use near 'over over NUMERIC(8, 3) DEFAULT NULL, CHANGE under under NUMERIC(8, 3) DEFAULT N' at line 1

[PDOException] SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server v ersion for the right syntax to use near 'over over NUMERIC(8, 3) DEFAULT NULL, CHANGE under under NUMERIC(8, 3) DEFAULT N' at line 1

好的。我用 --dump-sql 复制了所需的 SQL 代码,并在 mysql 控制台中手动执行它。我把勾号放回 over -> over 并且它起作用了。

但每次我启动 php app/console doctrine:schema:update --force 它都会尝试执行相同的 sql 代码。

我做错了什么?

遗憾的是,学说并没有真正避开保留字 (issue). As a workaround set the field names to not reserved words (list of reserved words)。

/*
 *@Orm\Column(name="my_order", type="string", length=255)
 */
private $order;