无法在 Google Cloud SQL 上插入数据,但 UID 字段仍在自动递增
Unable to insert data on Google Cloud SQL but UID field is still AUTO incrementing
我正在 运行关注 MySQL 在 Google Cloud SQL 上的行为,我以前从未见过。
我们尝试的每个 MySQL 命令都来自 Python 脚本,除了 INSERT。我们可以创建 table 并显示 table,但是当我们插入数据时 - table 中什么也没有出现。然而,如果我们将完全相同的插入语句复制到 MySQL 命令行并 运行 它,插入工作正常。
但这是不寻常的部分。即使 Python 脚本无法插入数据,UID AUTO INCREMENT 字段也会为每个空的和失败的插入增加。例如,如果 Python 脚本无法插入一行,下次我们从 mySQL 命令行 运行 插入时,我们会看到 UID 字段增加了一个。
就好像MySQL开始插入数据,自动增加了UID字段,但是数据没有到达。
我们正在 Google Cloud SQL 上使用 MySQL。插入是一个简单的测试:
insert into queue (filename, text) VALUES ('test', 'test')
知道这是什么或如何调试吗?
事实证明 AUTOCOMMIT 在 Google Cloud SQL 上设置为 OFF。
所有 SQL 插入必须跟在提交语句之后。
例如:
import MySQLdb
db = mdb.connect(ip, login, pword)
query = "insert into tbname (entity, attribute) VALUES('foo', 'bar')"
cursor = db.cursor()
cursor.execute(query)
db.commit()
我正在 运行关注 MySQL 在 Google Cloud SQL 上的行为,我以前从未见过。
我们尝试的每个 MySQL 命令都来自 Python 脚本,除了 INSERT。我们可以创建 table 并显示 table,但是当我们插入数据时 - table 中什么也没有出现。然而,如果我们将完全相同的插入语句复制到 MySQL 命令行并 运行 它,插入工作正常。
但这是不寻常的部分。即使 Python 脚本无法插入数据,UID AUTO INCREMENT 字段也会为每个空的和失败的插入增加。例如,如果 Python 脚本无法插入一行,下次我们从 mySQL 命令行 运行 插入时,我们会看到 UID 字段增加了一个。
就好像MySQL开始插入数据,自动增加了UID字段,但是数据没有到达。
我们正在 Google Cloud SQL 上使用 MySQL。插入是一个简单的测试:
insert into queue (filename, text) VALUES ('test', 'test')
知道这是什么或如何调试吗?
事实证明 AUTOCOMMIT 在 Google Cloud SQL 上设置为 OFF。
所有 SQL 插入必须跟在提交语句之后。
例如:
import MySQLdb
db = mdb.connect(ip, login, pword)
query = "insert into tbname (entity, attribute) VALUES('foo', 'bar')"
cursor = db.cursor()
cursor.execute(query)
db.commit()