云计算开发者社区

用新浪微博连接

一步搞定

查看: 4134|回复: 8

关于Django数据表结构迁移的问题 [复制链接]

Rank: 9Rank: 9Rank: 9

发表于 2014-3-30 19:33:48 |显示全部楼层
本帖最后由 smallcode 于 2014-3-31 11:36 编辑

一般Django的数据迁移是使用South,但对SAE的Mysql数据库进行迁移时(比如修改表字段名称),会出现异常:
(13013 )Scanned too many databases when querying INFORMATION_SCHEMA

Django1.7之后的版本有提供数据迁移等扩展命令,但由于SAE对数据库方面的限制,估计也会出现像South那样的异常。

请问怎么破?



使用道具 举报

Rank: 3Rank: 3

发表于 2014-3-30 19:51:25 |显示全部楼层
不同python,绑定

使用道具 举报

Rank: 9Rank: 9Rank: 9

发表于 2014-3-30 20:34:55 |显示全部楼层
M不是W-Ian 发表于 2014-3-30 19:51
不同python,绑定

能说详细点吗?

使用道具 举报

Rank: 7Rank: 7Rank: 7

发表于 2014-3-31 10:59:40 |显示全部楼层


On 03-30 19:33, smallcode wrote:
本帖最后由 smallcode 于 2014-3-30 20:33 编辑
一般Django的数据迁移是使用South,但对SAE的Mysql数据库进行迁移时(比如修改表字段
名称),会出现异常:
     (13013 )Scanned too many databases when querying INFORMATION_SCHEMA
Django1.7之后的版本有提供数据迁移等扩展命令,但由于SAE对数据库方面的限制,估计
也会出现像South那样的异常。
请问怎么破?
数据迁移和 django 有什么关系? 直接用数据库相关的工具去做就好了啊.

--
进出自由才是游戏者的生存之道。
http://zouyesheng.com


使用道具 举报

Rank: 9Rank: 9Rank: 9

发表于 2014-3-31 11:34:16 |显示全部楼层
Zephyr 发表于 2014-3-31 10:59
On 03-30 19:33, smallcode wrote:

数据迁移和 django 有什么关系? 直接用数据库相关的工具去做就好了啊 ...

你可能误解成迁移整个数据库的数据了。其实数据迁移还包括数据表结构的更改。我指的是后者。

使用道具 举报

Rank: 7Rank: 7Rank: 7

发表于 2014-3-31 16:17:51 |显示全部楼层


On 03-31 11:34, smallcode wrote:
     Zephyr 发表于 2014-3-31 10:59 [back]
     On 03-30 19:33, smallcode wrote:
     数据迁移和 django 有什么关系? 直接用数据库相关的工具去做就好了啊 ...
你可能误解成迁移整个数据库的数据了。其实数据迁移还包括数据表结构的更改。我指的
是后者。
嗯, 这种事我倒没依赖过具体应用, 一直是这样做的:


sql
├── 000.sql
├── 001.sql
├── 002.sql
├── 003.sql
├── 004.sql
├── 005.sql
├── 006.sql
├── 007.sql
├── 008.sql
├── 009.sql
├── 010.sql
├── 011.sql
├── 012.sql
├── 013.sql
├── 014.sql
├── 015.sql
├── 016.sql
├── 017.sql
...


--
进出自由才是游戏者的生存之道。
http://zouyesheng.com


使用道具 举报

Rank: 9Rank: 9Rank: 9

发表于 2014-3-31 16:54:34 |显示全部楼层
Zephyr 发表于 2014-3-31 16:17
On 03-31 11:34, smallcode wrote:

嗯, 这种事我倒没依赖过具体应用, 一直是这样做的:

没看明白。sql文件用于创建表结构的吗?如果数据表里面已存有数据,在不删除表的情况下,如何进行表结构迁移?

使用道具 举报

Rank: 7Rank: 7Rank: 7

发表于 2014-3-31 22:55:41 |显示全部楼层
smallcode 发表于 2014-3-31 16:54
没看明白。sql文件用于创建表结构的吗?如果数据表里面已存有数据,在不删除表的情况下,如何进行表结构 ...

我说那组sql文件,里面有创建表结构,也有项目上线之后的所有数据库变更,当然也包括需要使用自定义函数实现的,你说的数据迁移。

不过些在 SAE 环境下应该是用不了的。

我本意是想说的是,数据迁移这种事,应该由专门的工具去做的,即使是 phpmyadmin 这种,数据导出,处理,再导入。

使用道具 举报

Rank: 1

发表于 2018-2-6 01:52:28 |显示全部楼层
本帖最后由 关尔Manic 于 2018-2-6 02:02 编辑

原谅挖坟
貌似只能修改django源码做到
修改方法,修改文件 django/db/backends/mysql/introspection.py line:134行 红色部分为新增部分
  1.     def get_storage_engine(self, cursor, table_name):
  2.         """
  3.         Retrieves the storage engine for a given table. Returns the default
  4.         storage engine if the table doesn't exist.
  5.         """
  6.         cursor.execute(
  7.             "SELECT engine "
  8.             "FROM information_schema.tables "
  9.             "WHERE table_name = %s and table_schema = DATABASE()", [table_name])
  10.         result = cursor.fetchone()
  11.         if not result:
  12.             return self.connection.features._mysql_storage_engine
  13.         return result[0]
复制代码

附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

Archiver|云计算开发者社区 ( 京ICP证000007-137 )

GMT+8, 2018-9-21 12:58 , Processed in 0.272982 second(s), Total 13, Slave 12 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部