Codeigniter ci_sessions в пользовательских рецептах шеф-повара Opsworks

Я разработчик Codeigniter, который был новичком в AWS OpsWorks. Я успешно создал файл database.php со ссылкой на AWS — начало работы с получателями БД.

Теперь я столкнулся с проблемой создания таблицы ci_sessions в базе данных. Пожалуйста, обратитесь к журналу ошибок ниже.

    ================================================================================
Error executing action `run` on resource 'execute[mysql-create-table]'
================================================================================


Mixlib::ShellOut::ShellCommandFailed
------------------------------------
Expected process to exit with [0], but received '1'
---- Begin output of /usr/bin/mysql -uroot -pbulkhouse vendor_data -e'CREATE TABLE ci_sessions(
session_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
ip_address VARCHAR(63) NOT NULL,
user_agent VARCHAR(63) NOT NULL,
last_activity INT(10) UNSIGNED NOT NULL,
user_agent TEXT NOT NULL,
PRIMARY KEY (session_id),
KEY last_activity_idx (last_activity)
) ----
STDOUT:
STDERR: sh: -c: line 0: unexpected EOF while looking for matching `''
sh: -c: line 9: syntax error: unexpected end of file
---- End output of /usr/bin/mysql -uroot -pbulkhouse vendor_data -e'CREATE TABLE ci_sessions(
session_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
ip_address VARCHAR(63) NOT NULL,
user_agent VARCHAR(63) NOT NULL,
last_activity INT(10) UNSIGNED NOT NULL,
user_agent TEXT NOT NULL,
PRIMARY KEY (session_id),
KEY last_activity_idx (last_activity)
) ----
Ran /usr/bin/mysql -uroot -pbulkhouse vendor_data -e'CREATE TABLE ci_sessions(
session_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
ip_address VARCHAR(63) NOT NULL,
user_agent VARCHAR(63) NOT NULL,
last_activity INT(10) UNSIGNED NOT NULL,
user_agent TEXT NOT NULL,
PRIMARY KEY (session_id),
KEY last_activity_idx (last_activity)
) returned 1


Resource Declaration:
---------------------
# In /var/lib/aws/opsworks/cache.stage2/cookbooks/phpapp/recipes/dbsetup.rb

2:   execute "mysql-create-table" do
3:     command "/usr/bin/mysql -u#{deploy[:database][:username]} -p#{deploy[:database][:password]} #{deploy[:database][:database]} -e'CREATE TABLE #{node[:phpapp][:dbtable]}(
4:     session_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
5:     ip_address VARCHAR(63) NOT NULL,
6:     user_agent VARCHAR(63) NOT NULL,
7:     last_activity INT(10) UNSIGNED NOT NULL,
8:     user_agent TEXT NOT NULL,
9:     PRIMARY KEY (session_id),
10:     KEY last_activity_idx (last_activity)
11:   )"12:     not_if "/usr/bin/mysql -u#{deploy[:database][:username]} -p#{deploy[:database][:password]} #{deploy[:database][:database]} -e'SHOW TABLES' | grep #{node[:phpapp][:dbtable]}"13:     action :run
14:   end
15: end



Compiled Resource:
------------------
# Declared in /var/lib/aws/opsworks/cache.stage2/cookbooks/phpapp/recipes/dbsetup.rb:2:in `block in from_file'

execute("mysql-create-table") do
action [:run]
retries 0
retry_delay 2
command "/usr/bin/mysql -uroot -pbulkhouse vendor_data -e'CREATE TABLE ci_sessions(\n    session_id INT UNSIGNED NOT NULL AUTO_INCREMENT,\n    ip_address VARCHAR(63) NOT NULL,\n    user_agent VARCHAR(63) NOT NULL,\n    last_activity INT(10) UNSIGNED NOT NULL,\n    user_agent TEXT NOT NULL,\n    PRIMARY KEY (session_id),\n    KEY last_activity_idx (last_activity)\n  )"backup 5
returns 0
cookbook_name "phpapp"recipe_name "dbsetup"not_if "/usr/bin/mysql -uroot -pbulkhouse vendor_data -e'SHOW TABLES' | grep ci_sessions"end



[2015-08-29T13:57:47+00:00] INFO: Running queued delayed notifications before re-raising exception
[2015-08-29T13:57:47+00:00] INFO: template[mysql configuration] sending restart action to service[mysql] (delayed)
[2015-08-29T13:57:47+00:00] INFO: Processing service[mysql] action restart (mysql::server line 44)
[2015-08-29T13:57:51+00:00] INFO: service[mysql] restarted
[2015-08-29T13:57:51+00:00] ERROR: Running exception handlers
[2015-08-29T13:57:51+00:00] ERROR: Exception handlers complete
[2015-08-29T13:57:51+00:00] FATAL: Stacktrace dumped to /var/lib/aws/opsworks/cache.stage2/chef-stacktrace.out
[2015-08-29T13:57:51+00:00] ERROR: execute[mysql-create-table] (phpapp::dbsetup line 2) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '1'
---- Begin output of /usr/bin/mysql -uroot -pbulkhouse vendor_data -e'CREATE TABLE ci_sessions(
session_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
ip_address VARCHAR(63) NOT NULL,
user_agent VARCHAR(63) NOT NULL,
last_activity INT(10) UNSIGNED NOT NULL,
user_agent TEXT NOT NULL,
PRIMARY KEY (session_id),
KEY last_activity_idx (last_activity)
) ----
STDOUT:
STDERR: sh: -c: line 0: unexpected EOF while looking for matching `''
sh: -c: line 9: syntax error: unexpected end of file
---- End output of /usr/bin/mysql -uroot -pbulkhouse vendor_data -e'CREATE TABLE ci_sessions(
session_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
ip_address VARCHAR(63) NOT NULL,
user_agent VARCHAR(63) NOT NULL,
last_activity INT(10) UNSIGNED NOT NULL,
user_agent TEXT NOT NULL,
PRIMARY KEY (session_id),
KEY last_activity_idx (last_activity)
) ----
Ran /usr/bin/mysql -uroot -pbulkhouse vendor_data -e'CREATE TABLE ci_sessions(
session_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
ip_address VARCHAR(63) NOT NULL,
user_agent VARCHAR(63) NOT NULL,
last_activity INT(10) UNSIGNED NOT NULL,
user_agent TEXT NOT NULL,
PRIMARY KEY (session_id),
KEY last_activity_idx (last_activity)
) returned 1
[2015-08-29T13:57:51+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)

Рецепт, который я создал, был дан ниже

node[:deploy].each do |app_name, deploy|
execute "mysql-create-table" do
command "/usr/bin/mysql -u#{deploy[:database][:username]} -p#{deploy[:database][:password]} #{deploy[:database][:database]} -e'CREATE TABLE #{node[:phpapp][:dbtable]}(
session_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
ip_address VARCHAR(63) NOT NULL,
user_agent VARCHAR(63) NOT NULL,
last_activity INT(10) UNSIGNED NOT NULL,
user_agent TEXT NOT NULL,
PRIMARY KEY (session_id),
KEY last_activity_idx (last_activity)
)"not_if "/usr/bin/mysql -u#{deploy[:database][:username]} -p#{deploy[:database][:password]} #{deploy[:database][:database]} -e'SHOW TABLES' | grep #{node[:phpapp][:dbtable]}"action :run
end
end

заранее спасибо

0

Решение

Ваш SQL-запрос должен иметь закрывающую одинарную кавычку перед двойной кавычкой. Пожалуйста, смотрите ниже. Пытаться

node[:deploy].each do |app_name, deploy|
execute "mysql-create-table" do
command "/usr/bin/mysql -u#{deploy[:database][:username]} -p#{deploy[:database][:password]} #{deploy[:database][:database]} -e'CREATE TABLE #{node[:phpapp][:dbtable]}(
session_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
ip_address VARCHAR(63) NOT NULL,
user_agent VARCHAR(63) NOT NULL,
last_activity INT(10) UNSIGNED NOT NULL,
user_agent TEXT NOT NULL,
PRIMARY KEY (session_id),
KEY last_activity_idx (last_activity)
)'" # <-- ADD A SINGLE QUOTATION BEFORE THIS DOUBLE QUOTATION
not_if "/usr/bin/mysql -u#{deploy[:database][:username]} -p#{deploy[:database][:password]} #{deploy[:database][:database]} -e'SHOW TABLES' | grep #{node[:phpapp][:dbtable]}"action :run
end
end
0

Другие решения

Других решений пока нет …