我正在尝试从.sql创建数据库 我的代码一旦成功完成测试就无效了。 即时通讯使用python 3.4和托管在谷歌云上的mysql 5.7
import mysql.connector
SCHEMA_PATH = 'mysql_schema.sql'
mysql_conn = mysql.connector.connect(
user='X',
password='X',
host='X')
mysql_cursor = mysql_conn.cursor()
with open(SCHEMA_PATH, 'rt') as f:
schema = f.read()
mysql_cursor.execute(schema,multi=True)
mysql_conn.close()
这是我的.sql
CREATE DATABASE `X`;
USE `X`;
CREATE TABLE `profile` (
`id` int(11) AUTO_INCREMENT,
`birth_date` date,
`first_name` varchar(30),
`last_name` varchar(30),
`phone_number1` varchar(30),
`phone_number2` varchar(30),
`address_id` int(11) REFERENCES `address`(`id`),
PRIMARY KEY (`id`),
)ENGINE=InnoDB;
CREATE TABLE `address` (
`id` int(11) AUTO_INCREMENT,
`line1` varchar(100) DEFAULT '',
`street` varchar(100) DEFAULT '',
`suburb` varchar(100) DEFAULT '',
`postcode` varchar(100) DEFAULT '',
`state` varchar(100) DEFAULT '',
`country` varchar(100) DEFAULT 'Australia',
PRIMARY KEY (`id`),
)ENGINE=InnoDB;
quit
我设法找到一个解决方法。 如果我省略multi = True mysql_cursor.execute(架构,多=真) 该程序将有一个错误但如果我放回multi = True并再次运行该程序它将再次工作一次。 所以试一试,除非它每次都有效。
try:
mysql_cursor.execute(schema)
except Exception:
mysql_cursor.execute(schema,multi=True)
但我仍然想知道导致这个问题的原因。