使用Drupal的db_drop_primary_key方法删除主键出错
2017-09-19 15:31
351 查看
重构项目的时候在数据库中增加了一个字段,并要把该字段作为主键。由于原来已经存在主键值了,所以要在[.install]文件中打补丁。
db_drop_primary_key('question_analysis_stats_main_points_all');
db_add_primary_key('question_analysis_stats_main_points_all', array('pid', 'tid', 'cid','subject', 'weight', 'type'));
然后运行 run Updates,惊诧地出现了报错
Failed: PDOException: SQLSTATE[42000]: Syntax error or access violation: 1075 Incorrect table definition;
既然db_drop_primary不行,就试着使用db_query()
db_query('ALTER TABLE question_analysis_stats_main_points_all DROP PRIMARY KEY ,ADD PRIMARY KEY (pid, tid, cid,subject, weight, type)');成功了
db_drop_primary_key('question_analysis_stats_main_points_all');
db_add_primary_key('question_analysis_stats_main_points_all', array('pid', 'tid', 'cid','subject', 'weight', 'type'));
然后运行 run Updates,惊诧地出现了报错
Failed: PDOException: SQLSTATE[42000]: Syntax error or access violation: 1075 Incorrect table definition;
there can be only one auto column and it must be defined as a key
既然db_drop_primary不行,就试着使用db_query()
db_query('ALTER TABLE question_analysis_stats_main_points_all DROP PRIMARY KEY ,ADD PRIMARY KEY (pid, tid, cid,subject, weight, type)');成功了
相关文章推荐
- EF5+MVC4系列(5) 删除的方法 1:系统推荐的先查询后remove删除的方法 2:自己new一个包含主键的类,然后 attach附加 remove删除;3:使用db.Entry 修改状态删除4:EntityState的几种状态
- SQLite3中自增主键相关知识总结,清零的方法、INTEGER PRIMARY KEY AUTOINCREMENT和rowid的使用
- 删除主键: Alter table tabname drop primary key(col)
- ObjectDataSource配合存储过程(采用数据集)的使用(删除可以解决,但是编辑出错好像它的方法也无法解决
- 关于vector删除某一些特定的值的使用方法和出错的问题详解.
- ORA-24005:必须使用DBMS_AQADM.DROP_QUEUE_TABLE删除队列表 的解决方法
- 关于如何删除DataTable中的重复行---使用.Net提供方法
- Delphi使用BDE连接远程MS SQL SERVER 2000数据库时出现“Db-library network communciations layer not loaded.”错误的解决方法
- Delphi使用BDE连接远程MS SQL SERVER 2000数据库时出现“Db-library network communciations layer not loaded.”错误的解决方法
- 使用XmlDocument的Save方法容易出错的问题
- Delphi使用BDE连接远程MS SQL SERVER 2000数据库时出现“Db-library network communciations layer not loaded.”错误的解决方法
- Defining a Primary Key for a Table(该内存表DataTable 设置主键)
- 在使用GridView中删除的按钮弹出提示框最简单的一中方法
- 为什么使用ADO Data控件的Delete方法无法删除DataGrid控件中的数据
- 使用授权许可文件key激活卡巴斯基的方法
- [VB.NET]vb.net中使用treenodecollection的add 方法出错
- 在网页里让文本框只能输入数字的一种方法。外加回车换Tab (javascript key键的使用)+禁止切换输入法---转
- Liferay Portal使用Oracle数据库出错的解决方法
- 安装VS2005后,使用sqlcmd连接数据库出错的解决方法(转载)
- 判断DB启动时使用的是spfile还是pfile的方法