我使用 mysql2sqlite.sh 将我们的应用程序从 MySQL 迁移到 SQLite .
我更新了 PDO 连接字符串,它可以继续正常工作几周,但在使用 DB Browser for SQLite 浏览数据库时,我遇到了一些奇怪的事情;看来该脚本没有将数据类型更新为与 SQLite 兼容,但它仍然可以工作。这是怎么样?
表格
CREATE TABLE `events` (
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
`Forename` varchar(255) NOT NULL,
`Surname` varchar(255) NOT NULL,
`Site` TEXT,
`Badge` varchar(255) NOT NULL,
`Start` datetime NOT NULL,
`End` datetime NOT NULL,
`Created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
);
在使用 MySQL 数据类型时如何继续正常工作而不出现问题?
根据 SQLite 文档,大多数这些数据类型在 SQLite 中不存在,但它仍然有效。
我应该将数据类型更改为 TEXT
或 SQLite 支持的其他类型吗?
更新
根据 SQLite 文档,这些是数据类型:
INTEGER
TEXT
BLOB
REAL
NUMERIC
但它可以继续工作,没有问题,使用:
varchar(255)
datetime
timestamp
这怎么样?
最佳答案
来自docs -
SQLite 本质上支持所谓的“类型关联”。 SQLite 将 varchar
等内容转换为 text
以用于存储目的。
A column with TEXT affinity stores all data using storage classes NULL, TEXT or BLOB. If numerical data is inserted into a column with TEXT affinity it is converted into text form before being stored.
SQLite 将关联性分为几组(TEXT、NUMERIC、INTEGER、REAL、NONE) 每个组都遵循标准 SQL 数据类型以在这些列中进行转换。
您不必在转换过程中更改数据类型,因为 SQLite 将识别并根据其关联类型进行适当的转换。
关于php - MySQL 到 SQLite 的迁移。我需要更新数据类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27548923/