我想在Codeigniter 3.1.0中从我的服务器运行.sql
文件。我试过了
//code to create a DB & this is successful then following ocde
$query = file_get_contents('./test.sql');
$this->db->query($query);
这是我的test.sql
文件。 https://gist.github.com/rejoan/97dfae1b08116e386b3e6fda97eeb4f7
现在,当我运行它时,它始终显示错误
发生数据库错误
错误号码:1064
您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 'CREATE TABLE
user
附近(id
int(11)NOT NULL,test_id
int(11) NOT NULL,''在第10行
CREATE TABLE `test`
( `id` int(11) NOT NULL,
`name` varchar(250) NOT NULL,
`description` text NOT NULL,
`added` date NOT NULL,
`outdate` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `user`
( `id` int(11) NOT NULL,
`test_id` int(11) NOT NULL,
`name` varchar(250) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `test` ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `name` (`name`);
ALTER TABLE `user` ADD PRIMARY KEY (`id`),
ADD KEY `test_id` (`test_id`);
ALTER TABLE `test` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=37;
ALTER TABLE `user` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
ALTER TABLE `user`
ADD CONSTRAINT `FK_user_test` FOREIGN KEY (`test_id`)
REFERENCES `test` (`id`) ON UPDATE NO ACTION;
文件名:C:/xampp/htdocs/spider_clients/system/database/DB_driver.php
行号:691
那么如何通过问题解决这个问题呢?我有一个想法是通过PHP原始代码来做到这一点,但首先我想通过CI解决。有什么想法吗?
**即使我尝试用单引号替换所有反引号仍然不起作用
答案 0 :(得分:3)
您无法通过API运行任何 SQL文件。即使您拆分文件并为每个API调用运行一个查询也不行。
有些命令可以出现在SQL文件中,但它们实际上是mysql client builtin commands。服务器中的SQL解析器无法识别这些命令。
分割SQL文件很棘手。有些SQL语句包含文字分号,如 r value
0 0.8 -2.6097
1 0.9 -2.6097
2 1.0 -2.6097
3 1.2 -2.6097
4 1.4 -2.6097
5 0.8 -2.6641
6 0.9 -2.6641
7 1.0 -2.6641
8 1.2 -2.6641
9 1.4 -2.6641
df3['grp'] = (df3['r'] ==.8).cumsum()
grpd = dict(df3[['grp','value']][df3['r'] == 1].values)
df3["value"] = df3["grp"].map(grpd)
df3 = df3.drop('grp', axis=1)
r value
0 0.8 -2.6097
1 0.9 -2.6097
2 1.0 -2.6097
3 1.2 -2.6097
4 1.4 -2.6097
5 0.8 -2.6641
6 0.9 -2.6641
7 1.0 -2.6641
8 1.2 -2.6641
9 1.4 -2.6641
。所以你需要更复杂的逻辑来分割文件,它不像preg_split('/;/', $query)
另一个问题:你会发现提交一个"查询"除了SQL注释之外什么都不会导致错误。
此外,如果您的SQL文件太大,如果您使用CREATE TRIGGER
,则会耗尽PHP的最大内存。
最重要的是,您将浪费大量时间开发此代码并尝试使其正常工作。您最好利用已经设计用于运行SQL脚本的工具:
file_get_contents()
另见: