【发布时间】:2020-06-04 18:50:02
【问题描述】:
按照 symfony 文档 https://symfony.com/doc/current/session/database.html 中所述创建 sessions 表后,使用数据库验证控制台命令 console doctrine:schema:validate 时会引发错误
会话行为按预期工作,我没有注意到任何其他问题,但验证错误。即使执行了推荐的sql语句ALTER TABLE sessions CHANGE sess_id sess_id VARCHAR(128) NOT NULL;,验证错误仍然存在。
错误输出
Mapping
-------
[OK] The mapping files are correct.
Database
--------
[ERROR] The database schema is not in sync with the current mapping file.
The following SQL statements will be executed:
ALTER TABLE sessions CHANGE sess_id sess_id VARCHAR(128) NOT NULL;
sessions 表的创建方式(如 symfony 文档中所述)
CREATE TABLE `sessions` (
`sess_id` VARBINARY(128) NOT NULL PRIMARY KEY,
`sess_data` BLOB NOT NULL,
`sess_lifetime` MEDIUMINT NOT NULL,
`sess_time` INTEGER UNSIGNED NOT NULL
) COLLATE utf8mb4_bin, ENGINE = InnoDB;
【问题讨论】:
-
似乎很奇怪,数据库不会将 varbinary 更改为 varchar ...当使用 mysql 进行测试时,它会更改列类型..
-
列类型改变,但验证仍然失败。我已经成功执行了推荐的语句
ALTER TABLE sessions CHANGE sess_id sess_id VARCHAR(128) NOT NULL;,并且 sess_id 列是数据库本身的 VARCHAR。调用验证时仍然是同样的错误。 -
我相信我也有过这个错误,这也是我停止盲目依赖迁移差异命令的时候;o/虽然很烦人。
标签: php mysql symfony session doctrine