MariaDB 10 与 SQL::Translator::Parser
💡
原文英文,约300词,阅读约需2分钟。
📝
内容提要
在之前的帖子中,作者尝试使用'deploy'功能从Schema/Result类创建数据库表格,但是当时间戳字段的默认值为current_time()时,无法在数据库中创建表格。问题是生成的CREATE TABLE命令在'current_timestamp()'周围加上了引号,导致错误和拒绝。为了解决这个问题,作者在MariaDB.pm文件的create_field子程序中添加了一个搜索/替换,以去除引号。现在$schema->deploy();可以正确地创建整个数据库。
🎯
关键要点
- 作者尝试使用'deploy'功能从Schema/Result类创建数据库表格。
- 当时间戳字段的默认值为current_time()时,无法在数据库中创建表格。
- 生成的CREATE TABLE命令在'current_timestamp()'周围加上了引号,导致错误和拒绝。
- 为了解决问题,作者在MariaDB.pm文件的create_field子程序中添加了搜索/替换以去除引号。
- 现在$schema->deploy();可以正确地创建整个数据库。
- 作者测试了生成CREATE TABLE输出的代码,适用于导出。
- 作者认为SQL/Translator/Parser/MySQL.pm文件也可以受益于相同的代码添加。
❓
延伸问答
为什么在MariaDB中无法创建带有current_time()默认值的时间戳字段的表?
因为生成的CREATE TABLE命令在'current_timestamp()'周围加上了引号,导致错误和拒绝。
作者是如何解决MariaDB中创建表格的问题的?
作者在MariaDB.pm文件的create_field子程序中添加了搜索/替换,以去除current_timestamp()周围的引号。
现在$schema->deploy();的功能是什么?
$schema->deploy();现在可以正确地创建整个数据库。
作者测试了哪些代码以生成CREATE TABLE输出?
作者测试了适用于导出的代码,使用了Task和User作为示例表名。
SQL/Translator/Parser/MySQL.pm文件是否需要类似的代码修改?
作者认为SQL/Translator/Parser/MySQL.pm文件也可以受益于相同的代码添加,但尚未进行测试。
在MariaDB中使用'deploy'功能的目的是什么?
使用'deploy'功能的目的是从Schema/Result类创建数据库表格。
➡️