当前位置: 首页 > news >正文

yii2 migrate 时直接执行 SQL语句

问题:数据库使用了 sqlite3, 然后我想创建多列主键(或者非整数主键),本身这个功能是 sqlite3 支持的,但想直接用 yii2 的 migrate 来建表就不行。(sqlite3本身不支持在建立表结构之后再用 ALT TABLE 去添加约束)

解决方法:可以先按无主键的方式去创建表,然后用 IDE提供的工具或者 sqlite3 命令行 .schema <table_name> 来查看创建表的 SQL语句,migrate/down 把这个表drop掉,然后修改 migrate/up 部分,类似如下处理

public function safeUp() { $time = $this->beginCommand("create table event_asset"); $this->db->createCommand('create table event_asset ( event_id integer not null, number integer not null, created_at timestamp default CURRENT_TIMESTAMP not null, updated_at timestamp default NULL, deleted_at timestamp default NULL, primary key (event_id, number) );')->execute(); // $this->createTable('event_asset', [ // 'event_id' => $this->integer()->notNull(), // 事件ID // 'number' => $this->integer(16)->notNull(), // 资产ID // 'created_at' => $this->timestamp()->notNull()->defaultExpression('CURRENT_TIMESTAMP'), // 'updated_at' => $this->timestamp()->null(), // 'deleted_at' => $this->timestamp()->null(), // 删除时间 用于软删除 // ]); $this->endCommand($time); $this->insert('event_asset', [ 'event_id' => 3, 'number' => 2021174803, ]); }

本质上就是我们自己去接管 `$this->createTable(...)` 的功能

http://www.gsyq.cn/news/1612961.html

相关文章:

  • 别再只懂RGB了!用Python+OpenCV实战HSV色彩空间,轻松搞定图像分割与目标提取
  • Cadence OrCAD CIS库配置踩坑记:为什么你的BOM表总是缺字段?(附SPB17.4完美配置流程)
  • 用CodeBuddy玩游戏摸鱼指南
  • 从CrewAI到自定义集群:多Agent框架的选型决策树
  • MySQL 从零到一:安装、SQL实战与可视化工具全指南
  • JMeter性能测试报告美化实战:集成Allure打造交互式数据看板
  • 别再死记硬背了!用‘快递中转站’和‘接线员’的比喻,5分钟搞懂AUTOSAR RTE核心
  • 搭建RAG易错点
  • Linux 服务器运维指令流程大全:从零开始掌握磁盘、内存与备份
  • 专业级Windows镜像定制:自动化补丁集成完全手册
  • 【限时公开】VMware迁移黄金窗口期:仅需17分钟完成TB级虚拟机热迁移(附自动化PowerCLI v12.5脚本+日志解析器)
  • 别再手动画阵列了!HFSS Antenna Design Kit插件实战:5分钟搞定微带天线阵列布局
  • 9块9的合宙ESP32C3简约版到手,用Arduino 2.0.4库搞定USB下载和串口打印(Win10免驱)
  • 快速上手 Pinia!Vue3 极简状态管理使用教程
  • 【小白也能轻松玩转龙虾】虾壳云一键部署实操指南,新手快速完成 OpenClaw v2.7.9 环境配置(附最新安装包)
  • 二值神经网络原理与FPGA硬件实现详解
  • 告别连线地狱!用SystemVerilog Interface重构你的验证平台(附modport与clocking实战)
  • Minitab分组条形图保姆级教程:手把手教你用‘聚类’功能对比医院数据
  • 3分钟实现企业级PDF打印自动化:PDFtoPrinter终极解决方案深度解析
  • 信奥赛小白必看:手把手教你高效刷洛谷CSP-J/S初赛模拟题(附2024真题避坑指南)
  • EFR32BG22低功耗实战:手把手教你用Power Manager组件实现EM2/EM4自动切换
  • 告别MapGIS!用FME 2020+MyFME插件,5分钟搞定1:20万地质图转SHP(附完整流程)
  • 实战指南:20美元打造STM32超声波定向扬声器完整方案
  • 别再自己写NLP轮子了!用HanLP的RESTful API,5分钟搞定中文分词、词性标注和实体识别
  • 【小白也能轻松玩转龙虾】虾壳云一键部署 OpenClaw v2.7.9,零代码搭建电脑自动化智能体(附最新安装包)
  • 用示波器实测I2C时序:从波形图到速率计算的保姆级教程
  • 保姆级教程:用Sysmac Studio和Network Configurator搞定欧姆龙NX102与丰田PC10G的EIP通讯
  • 别再让错误裸奔了!手把手教你用NestJS异常拦截器打造优雅的错误响应
  • 混淆与SSL Pinning双重防御下,如何通过动静结合技术实现HTTPS抓包
  • 别再死记硬背了!用Python+NumPy手把手模拟量子叠加态与纠缠态(附代码)