当前位置: 首页 > 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.jsqmd.com/news/1100999/

相关文章:

  • 2026粉笔公考冲刺高分能力客观评测
  • 别再死记Tj=Ta+Rja*P了!用热成像仪实测芯片结温的保姆级避坑指南
  • 信奥赛小白必看:手把手教你用洛谷SCP模拟赛搞定CSP-J/S初赛(附2025最新赛题解析)
  • 綦江旧房翻新市场悄然升级:万惠装饰以6000平展厅与“先装修后付款”模式重塑行业标准
  • 别再只懂RGB了!用Python+OpenCV实战HSV色彩空间,轻松搞定图像分割与目标提取
  • 前端:谷歌浏览器播放视频报401错误
  • 别再死记硬背时序图了!用Arduino+AT24C02实战,5分钟搞懂I2C通信核心
  • FPGA数据丢失的5种隐蔽死法,第3种很多人最头疼
  • Cadence OrCAD CIS库配置踩坑记:为什么你的BOM表总是缺字段?(附SPB17.4完美配置流程)
  • 用CodeBuddy玩游戏摸鱼指南
  • MySQL 从零到一:安装、SQL实战与可视化工具全指南
  • MySQL数据库入门实战:从零搭建学生选课系统,掌握SQL核心与优化
  • 从CrewAI到自定义集群:多Agent框架的选型决策树
  • 给硬件工程师的EMC通关秘籍:手把手搞定150KHz-30MHz传导骚扰测试
  • 告别电感!手把手教你用运放和RC搭建一个混沌信号发生器(附LTspice仿真文件)
  • 小型公司拓客困局如何破?剪流AI员工手机打开了降本增效的新大门
  • 2026光伏车棚选哪家?三大核心标准一查便知
  • 用Python的blind-watermark库,给你的摄影作品加个隐形“身份证”(附抗攻击测试)
  • JMeter性能测试报告美化实战:集成Allure打造交互式数据看板
  • 企事业单位工单协同:报修云优势在哪
  • 思路及解答DFS(深度优先搜索)
  • 乙游角色争议频上热搜:IP视觉设定如何避免“撞脸”风险?稿定解析原创避坑指南
  • 运维远程协助电脑如何审计:从程序日志、屏幕记录到文件操作
  • 给汽车软件工程师的ASPICE入门指南:从SYS.1到SWE.6,搞懂过程模型到底在管什么
  • 别再死记硬背了!用‘快递中转站’和‘接线员’的比喻,5分钟搞懂AUTOSAR RTE核心
  • YOLOv8从零部署实战:环境配置、数据集准备与模型训练全流程详解
  • 医疗数据分析实战:手把手教你用Minitab分组条形图,一眼看穿不同医院的疗法差异
  • 终极VR视频转换指南:如何将3D沉浸式体验转化为可分享的2D视频
  • Linux 服务器运维指令流程大全:从零开始掌握磁盘、内存与备份
  • 搭建RAG易错点