-
05.01.2019, 14:19
#1
Пользователь
Query was empty
Привет народ!
Сегодня в логах сервера заметил нечто странноеОткрыть/закрыть
Я подумал что там говориться о строке под номером 1065, нашел я эту строку, а там вот что!
PHP код:
new
ogradazid[11],
fbiograda[8],
ammunation
;
И я исправил этот код переменных, на вот такой
PHP код:
new ogradazid[11],fbiograda[8],ammunation;
Теперь у меня вопрос: Что это за ошибка, и правильно ли я сделал, что работал со строкой 1065?
-
05.01.2019, 14:52
#2
1065 — это не номер строки, это код ошибки MySQL. И если попытаться перевести текст ошибки (да хоть элементарно с помощью Google Translate, фраза несложная), то получится что-то вроде
Открыть/закрыть
Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы
здесь (click)
.
-
Пользователь сказал cпасибо:
-
05.01.2019, 15:09
#3
Пользователь
И как с этим бороться?
Или ни чего страшного в этом нет?
-
05.01.2019, 15:26
#4
Сообщение от GoJIoBoJIoMkA
И как с этим бороться?
Или ни чего страшного в этом нет?Зависит от ситуации. Если вы считываете и выполняете из какого-нибудь файла строки с запросами и среди них есть пустые строки, то да, в принципе в этом нет ничего страшного (можно разве что сделать обнаружение и пропуск пустых строк, чтобы не наполнять логи варнингами из-за них). Если же вы где-то криво форматируете строку с запросом или даже забыли сделать форматирование, из-за чего вместо запроса передаётся пустая строка — понятное дело, что это не нормально и это нужно исправлять (т.е. вручную пересматривать все места, где совершаются запросы, и искать, где может быть та пустая строка).
Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы
здесь (click)
.
-
Пользователь сказал cпасибо:
-
12.01.2019, 14:34
#5
Пользователь
- Home
- Articles
- Database
- MySQL
-
Error 1065: Query was Empty
What?
In view of the fact that this error pops up in so many systems I take over, I have often gone down the wrong path following the red herring as it were when in fact the answer to this is very common.
Why?
Bespoke systems are the usual suspects. Developers will have told the system what to do when newline, carriage returns and tab characters are entered in the data. Those who are security-conscious will also make their system escape apostrophes (‘) and double-quotes («). But who can honestly build a system that thinks of everything from day one?
How?
Check all required values to escape have been escaped. In all my cases this has been the percent sign (%) but I’m listing what needs to be escaped in SQL for future use:
Character | Description |
---|---|
An ASCII NUL (0x00) character. | |
‘ | A single quote (“’”) character. |
« | A double quote (“»”) character. |
b | A backspace character. |
n | A newline (linefeed) character. |
r | A carriage return character. |
t | A tab character. |
Z | ASCII 26 (Control+Z). |
\ | A backslash (“”) character. |
% | A “%” character. |
_ | A “_” character. |
Additional
An alternative in SQL to escape apostrophes is to change these to paired apostrophes, so:
copyraw
INSERT INTO myTable VALUES ('1', 'It's amazing!'); -- equally valid INSERT INTO myTable VALUES ('1', 'It''s amazing!');
- INSERT INTO myTable VALUES (‘1‘, ‘It’s amazing!’);
- INSERT INTO myTable VALUES (‘1‘, ‘It’‘s amazing!’);
Bear this in mind when you’re implementing anti-injection security features.
Category: MySQL :: Article: 462
According to the documentation found here it states that having empty migrations is permitted by migrate
:
The migration files are permitted to be empty, so in the event that a migration is a no-op or is irreversible, it is recommended to still include both migration files, and either leaving them empty or adding a comment as appropriate.
But in my experience this does not seem to be the case as trying to rollback a migration where the down file is empty results in the following error:
error: migration failed in line 0: (details: Error 1065: Query was empty)
Steps to Reproduce
Steps to reproduce the behavior:
- Create a new DB migration, leaving the down migration file empty.
$ migrate -ext migrations -dir migrations empty_down_test
$ echo "UPDATE foo SET bar='baz' WHERE bar='buzz';" > migrations/20190701103700_empty_down_test.migration
- Preform the up migration then try to rollback:
$ migrate -path migrations -source "${MIGRATE_DB}" up
$ migrate -path migrations -source "${MIGRATE_DB}" down 1
- See error
Expected Behavior
Since the down migration file was empty there should be no action taken other than updating the schema_migrations table to the new version and mark it as being in a clean state (as it already was before trying to rollback the migration).
Migrate Version
v4.4.0
Loaded Source Drivers
godoc-vfs, gcs, file, s3, github, gitlab, go-bindata
Loaded Database Drivers
stub, cockroach, cockroachdb, mongodb, postgresql, redshift, spanner, cassandra, clickhouse, crdb-postgres, mysql, postgres, sqlserver
Go Version
go version go1.11.5 linux/amd64
Additional context
This was tested using the prebuilt v4.4.0 binaries available on this project’s releases page, and using MariaDB .5.5.60. A usable but annoying work around is to use the force
command to skip the down migrations that are a noop like this case.
Has migrate
‘s stance on empty migrations file changed, thus the docs are out dated or is this something else?
Now trying to DELETE a record. I select it from a list, and go to the delete routine. The record is displayed, but when I confirm the delete, I get an error saying
Fatal error: Uncaught exception ‘PDOException’ with message ‘SQLSTATE[42000]: Syntax error or access violation: 1065 Query was empty’ in /home1/sainttim/public_html/DeleteRec.php:53 Stack trace: #0 /home1/sainttim/public_html/DeleteRec.php(53): PDOStatement->execute(Array) #1 {main} thrown in /home1/sainttim/public_html/DeleteRec.php on line 53
I don’t understand why the query is empty since the data is displayed on the screen, but assume that what I’m displaying on the screen is not what’s in array($_POST[‘delete key’]). I’m stuck!
My code:
$OK = false;
$deleted = false;
if (isset($_GET[‘varpage’])) {
$varpageSend = $_GET[‘varpage’];
$NextPage = «DisplayText.php?varpage=».$varpageSend;
}
if ((isset($_GET[‘recid’])) && ($_GET[‘recid’] != «»)) {
$delrec = $_GET[‘recid’];
}
else
{
$error = «Record does not exist!»;
}
if (isset($_GET[‘recid’]) && !$_POST)
{
// prepare SQL query to display record
$sql = «SELECT home_key, textpage, h_date, h_seq, h_col, p_heading, p_text, h_hide FROM Homepage_text WHERE home_key = ?»;
$rs1=$sainttim->prepare($sql);
$OK = $rs1->execute(array($_GET[‘recid’]));
$row=$rs1->fetch();
$home_key=$row[‘home_key’];
$textpage=$row[‘textpage’];
$h_date=$row[‘h_date’];
$h_seq=$row[‘h_seq’];
$h_col=$row[‘h_col’];
$p_heading=$row[‘p_heading’];
$p_text=$row[‘p_text’];
$h_hide=$row[‘h_hide’];
if ($h_hide==0) {
$h_hide=’N’;
}
else {
$h_hide=»y»;
}
if (isset($rs1) && !$OK) {
$error = $rs1->errorInfo();
if (isset($error[2])) {
// store error message if query fails
$error = $error[2];
}
}
}
if (isset($_POST[‘delete’]))
{
// NEW code
$deletesql = ‘DELETE FROM Homepage_text WHERE home_key=?’;
$stmt=$sainttim->prepare($deleteSQL);
$deleted = $stmt->execute($row);
if (!$deleted)
{
$error = ‘There was a problem deleting the record.’;
}
else {
header(‘Location: ‘.$deleteGoTo);
exit;
}
}
The form:
<h1>Delete Entry from <?php echo $varpageSend; ?> Page</h1>
<?php if (isset($error)) {
echo «<p> class=’errormsg’>Error: «.$error.»</p>»;
} ?>
<form method=»POST» name=»form1″ id=»form1″>
<table class=»DisplayTable» align=»center»>
<tr>
<td align=»right»>Page:</td>
<td><?php echo $textpage?></td>
</tr>
<tr valign=»baseline»>
<td align=»right»>Date:</td>
<td><?php echo $h_date?></td>
</tr>
<tr>
<td align=»right»>Sequence:</td>
<td><?php echo $h_seq?></td>
</tr>
<tr>
<td align=»right»>Col:</td>
<td><?php echo $h_col?></td>
</tr>
<tr>
<td align=»right» >Heading:</td>
<td><?php echo $p_heading?></td>
</tr>
<tr>
<td align=»right»>Text Content:</td>
<td><?php echo $p_text?></td>
</tr>
<tr>
<td align=»right» >Hide Content?:</td>
<td><?php echo $h_hide?></td>
</tr>
<tr>
<td display=»hidden»><input value=<?php echo $delrec?> name=»deletekey» id=»deletekey» /></td>
<td display=»hidden»></td>
</tr>
<tr>
<td align=»right»><a href=»DisplayText.php?varpage=<?php echo $Thistextpage; ?>»><span class=»RedButton»> CANCEL </span></a></td>
<td align=»left»><input name=»delete» id=»delete» type=»submit» class=»GreenButton» value=»Confirm Delete» /></td>
</tr>
</table>
</form>
WMix
герр M:)ller
Партнер клуба
-
#1
1065 Query was empty
в каких случаях возникает эта ошибка?
-
#2
когда лишняя точка с запятой в запросе
WMix
герр M:)ller
Партнер клуба
-
#3
вот гоно а кроме mysql_error() и mysql_errno() есть функции по отслеживанию ошибок
я не знаю в каком из файлов эта ошибка проходит
WMix
герр M:)ller
Партнер клуба